学习资料来自于 https://wangdoc.com/bash/grammar.html
下列按原章节名称记录
1 简介
2 基本语法
- echo -n 取消末尾的回车 -e 会解释 这种,否则直接打印
- ls -是短参数 --是长参数
3 模式拓展
略读, 主要是一些正则和小技巧,难记
$ echo {a..c}{1..3}
a1 a2 a3 b1 b2 b3 c1 c2 c3
4 引号和转义
- 单引号用于保留字符的字面含义,各种特殊字符在单引号里面,都会变为普通字符,比如星号(*)、美元符号($)、反斜杠()等。
- 双引号: 三个特殊字符除外:美元符号($)、反引号(`)和反斜杠()。这三个字符在双引号之中,依然有特殊含义,会被 Bash 自动扩展。
- 双引号的另一个常见的使用场合是,文件名包含空格。这时就必须使用双引号(或单引号),将文件名放在里面。
- 双引号会原样保存多余的空格。
- 双引号还有一个作用,就是保存原始命令的输出格式。如
echo "$(cal)"
5 变量
- 等号左边是变量名,右边是变量句号。等号两边不能有空格
- 事实上,读取变量的语法(foo,可以看作是){foo}的简写形式。
- 如果变量的值本身也是变量,可以使用${!varname}的语法,读取最终的值。
- 特殊变量:
(1)$?
为上一个命令的退出码,用来判断上一个命令是否执行成功。返回值是0,表示上一个命令执行成功;如果是非零,上一个命令执行失败。
(2)$$
为当前 Shell 的进程 ID。
(3)$_
为上一个命令的最后一个参数。
(4)$!
为最近一个后台执行的异步命令的进程 ID。
(5)$0
为当前 Shell 的名称(在命令行直接执行时)或者脚本名(在脚本中执行时)。
(6)$-
为当前 Shell 的启动参数。
(7)$#
表示脚本的参数数量,$@
表示脚本的参数值,参见脚本一章。