Arrays 关于bashshell脚本中的数组

Arrays 关于bashshell脚本中的数组,arrays,shell,Arrays,Shell,只是一个简单的问题 我有一个数组: array=("1 2 3" "4 5 6") 如果我这样做: echo ${array[0]} echo ${array[1]} 将显示1 2 3或4 5 6 但是,如果我这样做: for iter in ${array[@]} do echo $iter done 显示的值与我预期的不一样。。。。谁能告诉我正确的使用方法吗?您需要的是引号: for iter in "${array[@]}"; do echo "$iter" done 报价是

只是一个简单的问题

我有一个数组:

array=("1 2 3" "4 5 6")
如果我这样做:

echo ${array[0]}
echo ${array[1]}
将显示1 2 3或4 5 6

但是,如果我这样做:

for iter in ${array[@]}
do
echo $iter
done

显示的值与我预期的不一样。。。。谁能告诉我正确的使用方法吗?

您需要的是引号:

for iter in "${array[@]}"; do 
  echo "$iter"
done

报价是您需要的:

for iter in "${array[@]}"; do 
  echo "$iter"
done

你期待什么?我得到数组中的值“123”和“456”。你期望得到什么?我得到了数组中的值“1 2 3”和“4 5 6”。谢谢@chepner的编辑。引用
iter
变量并不是真的需要,不是吗?这要看情况而定。不带引号,
$iter
的值将在每个单词作为单独的参数传递给
echo
之前进行单词拆分。引用,整个字符串作为单个参数传递。与类似于
iter=“ab”
(在
a
b
之间应该有多个空格)的东西相比,@chepner-Aah我可以在“${array[@]}”中使用
来查看iter的差异;不打印“%s\n”$iter;在${array[@]}中完成了iter的
;不打印“%s\n”$iter;完成
是的,多个空格的例子也有助于理解原因。再次感谢!:)@HaoShen,这里真正的魔法是引用
“${array[@]}”
——请查看并查找包含“当单词出现在双引号内时”的段落,感谢编辑@chepner。引用
iter
变量并不是真的需要,不是吗?这要看情况而定。不带引号,
$iter
的值将在每个单词作为单独的参数传递给
echo
之前进行单词拆分。引用,整个字符串作为单个参数传递。与类似于
iter=“ab”
(在
a
b
之间应该有多个空格)的东西相比,@chepner-Aah我可以在“${array[@]}”中使用
来查看iter的差异;不打印“%s\n”$iter;在${array[@]}中完成了iter的
;不打印“%s\n”$iter;完成
是的,多个空格的例子也有助于理解原因。再次感谢!:)@好神,这里真正的魔法是引用
“${array[@]}”
——查看并查找包含“当单词出现在双引号内时”的段落