在Shell程序中,最初的十个参数可以直接用特殊变量$0-$9获得。下面是它们的功能。
$0 命令名。
$1 第1个参数。
$2 第2个参数。
……
$9 第9个参数。
想当然地,我们会认为
$10 第10个参数。
在dash下,我们确实可以用$10得到第10个参数;然而,在bash下,$10得到的是$1+“0”,即第个参数末尾加上“0”,为得到第10个参数,我们可以用${10}。由此可知,为保证程序的可移植性,在代码中尽量用中括号{ }。
当程序运行时,如果我们想要知道获得了多少个命令行参数,我们可以采用如下两个变量:
$# 命令行参数的个数
$* 用空格隔开的所有命令行参数(不包括命令名)
例如,我们用如下命令行运行shell程序
sh test.sh a b c
在脚本test.sh如果有
echo $#
echo $*
我们可以得到相应的输出
3
a b c