$1,$2 … | 取第几个参数的意思 |
$* | 取出所有的参数,解析参数的分割符环境变量 IFS 来决定,如果IFS 变了解析参数就会有问题 |
$@ | 以空格为分割,自动取出所有的参数 |
看看几个例子
- 第一中就是取出第几位的参数
#set lzz niu apple
#echo "$1, $2, $3"
lzz, niu, apple
下标从1开始,取出了相应位置的参数
*后面两个我们放在一起看看
iuzhizhi@lzz-rmbp~ set lzz niu apple
liuzhizhi@lzz-rmbp~ echo "$@"
lzz niu apple
liuzhizhi@lzz-rmbp~ echo "$*"
lzz niu apple
看起来好像一样啊,想起来了 $*
是通过 IFS变量来决定的啊,再试试
liuzhizhi@lzz-rmbp~ set lzz niu apple
liuzhizhi@lzz-rmbp~ echo "$@"
lzz niu apple
liuzhizhi@lzz-rmbp~ echo "$*"
lzzniuapple
这个时 $@
还是正常的,但是$*
就不正常了,所以我们尽量使用 $@
在取全部参数
这是之前写过的一个脚本 shell 输入参数