变量
- 首个字符必须为字母(a-z,A-Z)。
- 中间不能有空格,可以使用下划线(_)。
- 不能使用标点符号。
- 不能使用bash里的关键字(可用help命令查看保留关键字)。
特殊变量
变量 | 含义 |
---|---|
$0 |
当前脚本的文件名 |
$n |
传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1 ,第二个参数是$2 。 |
$# |
传递给脚本或函数的参数个数。 |
$* |
传递给脚本或函数的所有参数。 |
$@ |
传递给脚本或函数的所有参数。被双引号(“ “)包含时,与 $* 稍有不同,下面将会讲到。 |
$? |
上个命令的退出状态,或函数的返回值。 |
$$ |
当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。 |
变量替换
形式 | 说明 |
---|---|
${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 的值 |
命令替换
Shell可以先执行命令,将输出结果暂时保存,在适当的地方输出
使用反引号
1 | DATE=`date` |
1 | Date is 2016年 02月 01日 星期一 19:17:25 CST |
注意事项
- 变量赋值不需要
$
, 但是变量取值需要$
- 为变量加入
{}
可以明确变量的边界 - 不同的shell解释器所产生的效果可能不同