Oleksii Tsvietnov

发表的评论

文本中还有另一个小错误。基本上,情况类似于 $* 和 "$@" 之间的区别。 如果使用 * 符号评估数组以获取所有元素,则可以编写 ${array[*]}。 但是,如果是 @ 符号,则必须始终使用双引号,例如 "${array[@]}"。 在存在带有空格符号的元素之前,这并不重要,因为那样会丢失特定元素的真实值。
这是一个例子

$ array1=(1 "two three" 4 five)

$ for i in ${array1[*]}; do echo ${i}; done
1
two
three
4
five

$ for i in ${array1[@]}; do echo ${i}; done
1
two
three
4
five

$ for i in "${array1[@]}"; do echo ${i}; done
1
two three
4
five

© . All rights reserved.