特殊符号:
$$ 进程号
$* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号(" ")包含时,都以"$1" "$2" … "$n" 的形式输出所有参数。
但是当它们被双引号(" ")包含时,"$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;"$@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数。
${var} | 变量本来的值 |
${var:-word} | 如果变量 var 为空或已被删除(unset),那么返回 word,但不改变 var 的值。 |
${var:=word} | 如果变量 var 为空或已被删除(unset),那么返回 word,并将 var 的值设置为 word。 |
${var:?message} | 如果变量 var 为空或已被删除(unset),那么将消息 message 送到标准错误输出,可以用来检测变量 var 是否可以被正常赋值。 若此替换出现在Shell脚本中,那么脚本将停止运行。 |
${var:+word} | 如果变量 var 被定义,那么返回 word,但不改变 var 的值。 |
echo -e 转义; -E 禁止转义
`` 和 $() 等价;
表达式和运算符之间要有空格, eg. '2+2' 是错的, '2 + 2'则是对的, 乘法要用 '*'
条件表达式要放在[]中间,并且要有空格,eg. [$a==$b] 是错的, [ $a == $b ] 则是对的
= 判断两个字符串相等; == 判断两个数字相等 -o 或; -a 与; -z 字符串长度是否为0; -n 字符串长度是否不为0
单引号
- str='this is a string'
单引号字符串的限制:
- 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
- 单引号字串中不能出现单引号(对单引号使用转义符后也不行)。
双引号
- your_name='qinjx'
- str="Hello, I know your are "$your_name"! "
双引号的优点:
- 双引号里可以有变量
- 双引号里可以出现转义字符