关于Shell编程中$*和$#的一些问题

执行下面的命令:

set -- "I am" handsome olsboy
 for i in $*; do echo $i; done
 for i in $@; do echo $i; done
 for i in “$*”; do echo $i; done
 for i in$@”; do echo $i; done 




这四种输出有什么区别?

$*$@都是指函数或脚本后面带的所有参数
区别是 当"$*""$@"被双引号 引起来的时候,"$*"会被当做一个整体,"$@"还是会将参数分开
比如 你带入的参数是1 2 3,那么"$*"会把所有参数当成一个整体"1 2 3"   "$@"会分开为:"1" "2" "3"

放在你的脚本里面  就是"$*"是一个整体,for循环一次,输出:
1 2 3
而"$@"会分开,会for循环3次,输出
1
2
3