2017-05-24 77 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

相关问题