当命令行为test.sh 1 2 3
"$*"表示"1 2 3"
"$@"表示"1" "2" "3"
二者没有被引号括起来时是一样的都为"1 2 3",只有当被引号括起来后才表现出差异
# 数组 animals
$ animals=("a dog" "a cat" "a fish")
# ${animals[*]} 和 ${animals[@]}的行为是一致
$ for i in ${animals[*]}; do echo $i; done
$ for i in ${animals[@]}; do echo $i; done
#输出如下
a
dog
a
cat
a
fish
# 被用引号引起来的区别
$ for i in "${animals[*]}"; do echo $i; done
a dog a cat a fish
$ for i in "${animals[@]}"; do echo $i; done
a dog
a cat
a fish