1. 常用的$变量
变量 | 含义 |
---|---|
$0 |
当前脚本的文件名 |
$n |
传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是1,第二个参数是2。 |
$# |
传递给脚本或函数的参数个数。 |
$* |
传递给脚本或函数的所有参数,并把他们作为一个整个字符串处理。 |
$@ |
传递给脚本或函数的所有参数,可以单独处理每个参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。 |
$? |
上个命令的退出状态,或函数的返回值。 |
$$ |
当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。 |
2. 用$取命令行参数
运行脚本时传递给脚本的参数称为命令行参数。
命令行参数用 n 表示,例如,1 表示第一个参数,2 表示第二个参数,依次类推。为了兼容10以后的参数下标,建议使用 `{N}` 来取10以后的参数。
注意
-
$0
可能是命令名称,也可能是包括该命令在内的全路径名称。为了能够获取命令的名称,可用basename $0
命令进行统一处理,无论采用何种方式启动程序,均可正确获取命令名称。 - 当我们判断某个参数是否有数据内容时,可以用
if [ -n $var ]
进行判断。
3. shift命令
bash shell工具链中提供了shift命令来帮助操作命令行参数,该命令会根据它们的相对位置来移动命令行参数,实现对命令行参数的遍历。
使用shift命令时,默认情况下它会将每个参数变量减一。比如命令行有3个参数,当执行shift命令一次后,变量3的值会移动到2,变量2的值会移动到1,而变量$1的值则会被删除。
shift遍历命令行参数
当我们不知道命令行参数个数的情况下,采用shift命令遍历其命令行参数是一种绝佳的方法。我们可以只操作第一个参数,执行shif命令移动参数,然后继续操作第一个参数,依次迭代。当然,你也可以执行shift n命令,n为你想移动的参数位数,默认为1。