2013-07-15 119 views
1

只是一個簡單的問題。關於bash 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 

所顯示的值不是如我所料....誰能給我用正確的方式?

+0

你有什麼期望?我得到「1 2 3」和「4 5 6」,數組中的值。 – tjameson

回答

4

報價是你所需要的:

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

感謝編輯@chepner。引用「iter」變量並不是真的需要,不是嗎? –

+1

這取決於。沒有加引號,'$ iter'的值將在每個單詞作爲單獨的參數傳遞給'echo'之前進行單詞分割。引用時,整個字符串作爲單個參數傳遞。比較'iter =「a b」'(在'a'和'b'之間應該有多個空格)「。 – chepner

+1

@chepner啊我可以在'$ {array [@]}中使用'for iter'來看看它的區別。做printf「%s \ n」$ iter;完成「和」爲$ {array [@]}「中的iter;做printf「%s \ n」「$ iter」;完成'和是啊,多空間的例子是很好理解的原因了。再次感謝! :) –