【发布时间】:2019-10-28 09:39:54
【问题描述】:
我遇到了一个明显简单的脚本的问题。
基本上是这样的:
for s in $(cat FILENAME| grep User)
do
echo "$s"
done
但不是给我类似的结果:
User bla bla bla
User2 something blabla
结果是:
User
bla
bla
bla
User2
【问题讨论】:
-
如果您阅读 bash 手册,
for x in ...会循环遍历 单词,而不是行。这对这项工作来说是错误的工具。 -
@GordonDavisson:不一定。空格通常是一个问题,如果您遍历文件或查找结果,您可能会遇到空格。如果在所有这些情况下都不能使用“for”,那就太糟糕了。这就是 IFS 派上用场的地方(见下文)。
-
@jottbe 同样在这些情况下,
for是错误的工具。 -
您要求正确的方法来编写 shell 循环以读取 grep 的输出,然后准确输出 grep 在没有循环的情况下将输出的内容。不要这样做,原因很明显,它毫无意义,而且你可能根本不应该使用这种方法来做你真正想做的事情。如果您正在考虑这样做,您应该阅读unix.stackexchange.com/q/169716/133219 和几个常见问题解答。还要谷歌 UUOC!