带有多行数据的 for 循环

rub*_*o77 11 bash for

我需要创建一个循环遍历项目列表的脚本。我想在脚本中插入一个字符串。

我试过:

for i in "
a
b
c";
do
 echo "test "$i
done
Run Code Online (Sandbox Code Playgroud)

但这仅输出一个字符串:

test a b c
Run Code Online (Sandbox Code Playgroud)

我怎么会得到这个?

testa
testb
testc
Run Code Online (Sandbox Code Playgroud)

ab并且c只是一些较长单词的示例,我从 OpenOffice Calc 文件中获得)

Ign*_*ams 19

你会改用while循环。

while read i
do
  echo "test$i"
done <<< 'a
b
c'
Run Code Online (Sandbox Code Playgroud)

  • 对于好奇,这称为“here string”,它是“here documents”的变体,它在内容的末尾和开头使用两个小于号和一个分隔符 (3认同)

Bon*_*ott 15

export a="
a
b
c
"

for i in $a; do echo "test$i";done
Run Code Online (Sandbox Code Playgroud)

  • @rubo77 不同之处在于 `$a` 没有加引号,这意味着它会进行分词,而 `"ab c"` 被引用,因此 shell 将其视为一个词。 (2认同)
  • 请注意,它经历了_工作拆分_**和** _文件名生成_。此外,“出口”在这里没有意义。abc 中的 for i 有什么问题?做 echo "test$i"; 完成`? (2认同)
  • 如果字符串行的字符之间有空格,则 for 循环可能无法按您的意愿工作。 (2认同)