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

标签 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

我想要的输出是:

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

关于bash - 将 bash 变量分配为两个单词字符串的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44164017/

相关文章:

linux - Shell 命令在目录模式中查找文件

linux - 如何根据文件是否存在递归执行命令

r - 替代 R 中的循环

java - 如何使用 printf -Java 将二维数组的所有元素排列成完美的表格

c - c/c++ 中根据条件进行一行赋值

bash - 打印作为变量传递的字段列表

linux - 在日志中用主机名替换 IP

c - 使用带有嵌套 for 循环和内在函数的 openmp 时出现问题

php - 这个 'or' 在 PHP 赋值语句的左侧有什么作用?

c - 警告 : assignment from incompatible pointer type [enabled by default]