shell
提供了一组变量,用来存储传递给脚本或函数的参数
$0~$9以及更多的位置参数扩展
1 | !/bin/bash |
执行这个脚本,输出如下
1 | ./posit-param |
$0
存储的是所执行的程序所在的完成路径名,没有传递其他参数,则其他位置参数为空
在脚本内增加一行接收第十个参数
1 | ... |
执行脚本,传递十个参数
1 | ./posit-param a b c d e f g h i j |
可以通过参数扩展来接收第十个及更多的参数,将最后一行改为
1 | ... |
$
$#
存储的是传递给脚本或者函数的参数的个数
在posit-param
脚本内加一行代码
1 | ... |
1 | $ ./posit-param a b c d e f g h i j |
shift用于处理大量参数
shift
命令的作用是把除了$0
以外的全部位置参数向左移动指定的间隔
1 | ... |
示例脚本如下
1 | !/bin/bash |
1 | $ ./posit-param2 a b c |
$*与$@
$*
扩展为从1
开始的位置参数列表。当被双引号包裹时("$*"
),将全部位置参数扩展为双引号引用的一个字符串,每个位置参数以IFS
(通常默认为空格)变量分隔开。
$@
扩展为从1
开始的位置参数列表。当被双引号包裹时("$@"
),将每个参数扩展为双引号引用的独立的字符串。
1 | !/bin/bash |
1 | $ ./posit-param3 |
所以位置参数的扩展有$*
、"$*"
、$@
、"$@"
四种形式。通常情况下,"$@"
会更符合我们的预期效果。