比较$*和$@需要做个循环的小shell如下:

 
  
  1. /bin/bash  
  2. for x in $*  
  3. do  
  4.         echo "\$x="$x  
  5. done  
  6. for y in "$*" 
  7. do  
  8.         echo "\$y="$y  
  9. done  
  10. for z in $@  
  11. do  
  12.         echo "\$z="$z  
  13. done  
  14.  

运行这个小脚本的结果如下

#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;而 $@则比较诡异,从结果上看它不仅将全部内容看为一个字符串。