Sam*_*Sam 3 bash for-loop variable-assignment
我想将一个 bash 变量分配为两个词段的集合。bash 变量类似于字符串列表,其中每个字符串是用引号括起来的两个单独的单词)。然后我尝试在 for 循环中使用此变量,以便每次迭代将循环变量分配给两个词段之一。
这是我的代码:
#!/bin/bash
variable='"var one" "var two" "var three"'
for i in $variable
do
echo $i
done
Run Code Online (Sandbox Code Playgroud)
我想要的输出是:
var one
var two
var three
Run Code Online (Sandbox Code Playgroud)
但我现在得到的
"var
one"
"var
two"
"var
three"
Run Code Online (Sandbox Code Playgroud)
定义单个三元素数组,而不是 31 个字符的字符串:
variable=(
"var one"
"var two"
"var three"
)
for i in "${variable[@]}"; do
echo "$i"
done
Run Code Online (Sandbox Code Playgroud)
如果您需要接受一个字符串作为输入并将其解析为一个数组,同时尊重数据中的引号,我们还有其他直接问题;参见例如Bash 在将字符串转换为参数时不解析引号