Bash变量和输出

时间:2012-10-03 09:08:06

标签: bash

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

2 个答案:

答案 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中运行,因此在循环中对变量进行的任何修改在完成后仍然可见。