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中声明和使用的变量只存在于通过管道创建的子shell,如何从外部跟踪它们?我需要稍后在脚本中使用返回的true或false
答案 0 :(得分:3)
使用流程替换:
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 }' )
答案 1 :(得分:1)
如果您使用的是bash
4.2或更高版本,请设置lastpipe
选项。这会强制管道中的最后一个命令(在本例中为while循环)在当前shell而不是子shell中运行,因此在循环中对变量进行的任何修改在完成后仍然可见。