【发布时间】:2021-01-15 22:42:14
【问题描述】:
我可以遍历文件 a.txt,在每一行上执行任意命令(在本例中为 echo)
xargs -n1 echo < a.txt
或
for a in $(cat a.txt); do echo $a; done
为什么我不能做类似的事情
for arg do echo $arg; done < a.txt
返回成功但没有输出?
【问题讨论】:
-
将
for arg更改为while read arg;,它应该可以满足您的需求。 -
谢谢,确实如此。我只是想知道类似于上述循环的 for 循环是否可行。如果不是,为什么。
-
on each line by doing xargs -n1不适用于包含奇数个'或/和奇数个"的行。or for a in $(cat a.txt)不适用于单词之间有空格或制表符的行。 -
for arg; do ...等价于for arg in "$@"; do ...。它不从输入流中获取值,而是从位置参数中获取值。