比较$*和$@需要做个循环的小shell如下:
- /bin/bash
- for x in $*
- do
- echo "\$x="$x
- done
- for y in "$*"
- do
- echo "\$y="$y
- done
- for z in $@
- do
- echo "\$z="$z
- done
运行这个小脚本的结果如下
#sh ./test.sh 1 2 3 4 $x=1 $x=2 $x=3 $x=4 $y=1 2 3 4 $z=1 2 3 4
从上面的结果可以看出 $*是将输入的内容按照空格为分界点每一个部分为一个单独的字符串,所以才会分别给x赋值;而 “$*”则是将输入内容的全部看为一个字符串,并将这个字符串赋值给y;而 $@则比较诡异,从结果上看它不仅将全部内容看为一个字符串。
转载于:https://blog.51cto.com/songknight/520592