文本中还有另一个小错误。基本上,情况类似于 $* 和 "$@" 之间的区别。 如果使用 * 符号评估数组以获取所有元素,则可以编写 ${array[*]}。 但是,如果是 @ 符号,则必须始终使用双引号,例如 "${array[@]}"。 在存在带有空格符号的元素之前,这并不重要,因为那样会丢失特定元素的真实值。这是一个例子
$ array1=(1 "two three" 4 five)
$ for i in ${array1[*]}; do echo ${i}; done 1twothree 4five
$ for i in ${array1[@]}; do echo ${i}; done 1twothree 4five
$ for i in "${array1[@]}"; do echo ${i}; done 1two three 4five
文本中还有另一个小错误。基本上,情况类似于 $* 和 "$@" 之间的区别。 如果使用 * 符号评估数组以获取所有元素,则可以编写 ${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