2017-05-24 86 views
0

我想將bash變量賦值爲兩個字符的集合。 bash變量類似於字符串列表,其中每個字符串是用引號括起來的兩個單獨的單詞)。然後我試圖在for循環中使用這個變量,以便循環變量被分配給每次迭代的兩個字段中的一個。將bash變量賦值爲兩個字符串的列表

這裏是我的代碼:

#!/bin/bash 
variable='"var one" "var two" "var three"' 
for i in $variable 
do 
    echo $i 
done 

我想輸出是:

var one 
var two 
var three 

但是我目前在

"var 
one" 
"var 
two" 
"var 
three" 
+2

爲什麼不使用數組? – Inian

+2

您正在將字符串列表放入字符串中。爲什麼不把一個字符串列表放入一個* list * - 或者,而不是一個數組? –

+1

相關:[BashFAQ#50](http://mywiki.wooledge.org/BashFAQ/050) - 由於不能用於存儲命令的相同原因,字符串不能安全地用於存儲列表。 –

回答

2

得到定義單人三-lele數組,不是31個字符的字符串:

variable=(
    "var one" 
    "var two" 
    "var three" 
) 
for i in "${variable[@]}"; do 
    echo "$i" 
done 

如果您需要接受一個字符串作爲輸入並將其解析爲一個數組,同時遵守數據中的引號,我們還有其他問題直接在點上;請參閱Bash doesn't parse quotes when converting a string to arguments

相關問題