如何将列表传递给forbash?
我试过了
echo "some
different
lines
" | for i ; do
echo do something with $i;
done
Run Code Online (Sandbox Code Playgroud)
但这不起作用.我也试图找到一个解释,man但没有man for
我知道,我可以使用while,但我想我曾经看过一个解决方案for,他们没有定义变量,但可以在循环内使用它
Aar*_*lla 11
这可能有用,但我不推荐它:
echo "some
different
lines
" | for i in $(cat) ; do
...
done
Run Code Online (Sandbox Code Playgroud)
$(cat)将扩展一切,stdin但如果echo包含空格的一行,for将认为这是两个单词.所以最终可能会破裂.
如果要在循环中处理单词列表,则更好:
a=($(echo "some
different
lines
"))
for i in "${a[@]}"; do
...
done
Run Code Online (Sandbox Code Playgroud)
说明:a=(...)声明一个数组.$(cmd...)扩展到命令的输出.它仍然容易受到空白的影响,但如果你引用得当,这可以修复.
"${a[@]}" 扩展为数组中正确引用的元素列表.
注意:for是内置命令.使用help for(在bash中)代替.
Tom*_*ech 10
for 迭代一个单词列表,如下所示:
for i in word1 word2 word3; do echo "$i"; done
Run Code Online (Sandbox Code Playgroud)
使用while read循环迭代线:
echo "some
different
lines" | while read -r line; do echo "$line"; done
Run Code Online (Sandbox Code Playgroud)