grep -A 26 "some text" somefile.txt |
awk '/other text/ { gsub(/M/, " "); print $4 }' | while read line
do
//operations resulting in a true of false answer
done
在 while 中声明和使用的变量仅存在于通过管道创建的子壳体中,如何从外部跟踪它们?我需要稍后在脚本中使用返回的 true 或 false
使用进程替换:
while read line
do
# operations resulting in a true of false answer
done < <(grep -A 26 "some text" somefile.txt |
awk '/other text/ { gsub(/M/, " "); print $4 }' )
如果您使用的是 bash
4.2 或更高版本,请设置 lastpipe
选项。这会强制管道中的最后一个命令(在本例中为 while 循环)在当前 shell 而不是子 shell 中运行,因此在循环中对变量所做的任何修改在完成后仍然可见。