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[@]}”
——查看并查找包含“当单词出现在双引号内时”的段落