当你执行shell脚本时,如
./myshell.sh a b c d e f
其中,后部分的a b c d e f 是传入shell脚本myshell.sh的参数 。
在shell脚本里,我们可以通过这样获得传入的参数
echo first arg is $1
echo tenth arg is ${10}
其中,
$1表示第1个参数,${10}表示第10个参数。
当从第10个参数开始,就要使用${10}来表示的,即要使用花括号。
shell有特殊的“变量”提供了对传递的参数的总数的访问,以及一次对所有参数的访问:
$#
提供传递到shell脚本或函数的参数总数。当你是为了处理选项和参数而建立循环时,它会很用,如:
while [ $# != 0 ]
do
case $1 in #处理第一个参数
...
esac
shift #移开第一个参数
done
$*, $@
一次表示所有的命令行参数,这两个参数可用来把命令行参数传递给脚本或函数所执行的程序。
"$*"
将所有命令行参数视为单个字符串,赞同于"$1 $2 ... "。
"$@"
将所有命令行参数视为单独的个体,也就是单独字符串,赞同于"$1" "$2" ....。这是将参数传递给其他程序的最侍方式,因为它会保留所有内嵌在每个参数里的任何空白。