2012-10-03 140 views
1
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 

聲明和使用的變量只存在於通過管道創建的子shell中,我如何從外部跟蹤它們?我需要使用返回true或false後面的腳本Bash變量和輸出

回答

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 }') 
+0

該死的,我只是張貼基本相同。你打敗了我;)+1 – 0xC0000022L

+0

你讓我的生活變得更輕鬆,非常感謝! – confusified

1

如果您正在使用bash 4.2或更高版本,設置lastpipe選項。這會強制管道中的最後一個命令(在本例中爲while循環)在當前shell而不是子shell中運行,因此對循環中變量所做的任何修改在完成後都保持可見。