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

Posted

技术标签:

【中文标题】将 bash 变量分配为两个单词字符串的列表【英文标题】:Assigning a bash variable to be a list of two word strings 【发布时间】:2017-10-25 03:08:15 【问题描述】:

我想将一个 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"

【问题讨论】:

为什么不使用数组? 您将字符串列表放入字符串中。为什么不将字符串列表放入 list —— 或者更确切地说,放入数组中? 相关:BashFAQ #50 -- 字符串不能安全地用于存储列表,原因与它们不能用于存储命令相同。 @Inian 是的,这就是答案,我不知道如何在 bash 中循环遍历数组,而且我一般对 bash 数组也不太了解 【参考方案1】:

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

【讨论】:

以上是关于将 bash 变量分配为两个单词字符串的列表的主要内容,如果未能解决你的问题,请参考以下文章

如何将字符串列分配给变量并在 Bash 脚本的输出中引用它

将字符串变量分配给空格字符“”以查找重复的单词

python中split的用法分割的字符串怎么命名?

如果一个为空白,如何将变量分配给两个字符串之一?

Python类,实例变量和访问器方法

如何在 bash shell 中将一个字符串拆分为多个字符串,至少用一个空格分隔?