Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

学习编写shell脚本(1) #29

Open
Jmingzi opened this issue Apr 9, 2018 · 1 comment
Open

学习编写shell脚本(1) #29

Jmingzi opened this issue Apr 9, 2018 · 1 comment

Comments

@Jmingzi
Copy link
Owner

Jmingzi commented Apr 9, 2018

学习它的目的

  1. 快速执行一系列操作,节省时间
    一个项目的打包、提交、分支切换、merge、push,包括额外的操作,修改版本号、然后build、publish等。这一系列的操作完全可以用一个shell脚本完成,因为每次手动输入命令会很繁琐。

  2. 规范git commit
    我们可以在shell脚本中添加commit规范,这样使得每次提交都会至少标明规范所需要的。关于commit规范,可以自行查阅

# 规范的commit提交的格式类似

<type>(<scope>) : <subject>
feat(location): add something ...

# type
feat 新功能
fix 修复bug
doc 修改了文档
debug 调试
style 代码格式改变
refactor 某个已有功能重构
perf 性能优化
test 增加测试
build 改变了build工具 如 grunt换成了 npm
revert 撤销上一次的 commit 

# scope 用来说明此次修改的影响范围
all 表示影响面大 ,如修改了网络框架  会对真个程序产生影响
location 表示会影响某个小小的功能
module 表示会影响某个模块 

# subject 用来简要描述本次改动
  1. 理解shell的工作原理,对于webpack或node构建工具的熟悉有帮助

脚本解析器

查看Element UI中的release.sh,部分代码:

#!/usr/bin/env sh
set -e
echo "Enter release version: "
read VERSION

其中的#!/usr/bin/env sh 告诉操作系统用来解释脚本的程序位置。

#通常用作注释,但是#!放在一起就标志着这是一个shell script,其后的路径指出了用来解释这个script的程序。

目前shell脚本中主要有以下两种方式:

  • #!/bin/sh
  • #!/bin/bash

区别:使用sh调用执行脚本相当于打开了bash的POSIX标准模式,即

/bin/sh ===  /bin/bash --posix

--posix表示当某行代码出错时,不继续往下解释。

而Element Ui中的/usr/bin/env sh等于/bin/sh

参考 Mac OS X 执行shell以及bash shell的区别

shell 基础入门

在“抛砖引玉”理解之后,我们需要真正系统的了解下Shell Script语法。接下来的计划就是系统的学习Shell了。

@Jmingzi Jmingzi changed the title 在mac编写shell脚本(1) 学习编写shell脚本(1) Apr 9, 2018
@Jmingzi
Copy link
Owner Author

Jmingzi commented Apr 9, 2018

ubuntu(linux)下 source、sh、bash、./ 执行脚本的区别是什么?

  1. source命令用法:
source FileName

作用:在当前 bash 环境下读取并执行 FileName 中的命令。该 filename 文件可以无 "执行权限"。

注:该命令通常用命令 . 来替代。

  1. sh、bash的命令用法:
sh FileName
或
bash FileName

作用:打开一个子 shell 来读取并执行 FileName 中命令。该 filename 文件可以无 "执行权限"。

注:运行一个shell脚本时会启动另一个命令解释器。

3、./的命令用法:

./FileName

作用: 打开一个子 shell 来读取并执行 FileName 中命令,该 filename 文件需要 "执行权限"。

chmod +x FileName 加上执行权限

注:运行一个 shell 脚本时会启动另一个命令解释器。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant