将 bash 变量分配为两个单词字符串的列表

Assigning a bash variable to be a list of two word strings

我想分配一个bash变量为两个词段的集合。 bash 变量类似于字符串列表,其中每个字符串都是用引号括起来的两个单独的单词)。然后我试图在 for 循环中使用这个变量,以便循环变量被分配给每次迭代的两个词段之一。

这是我的代码:

#!/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"

定义单个三元素数组,而不是 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