我正在做一些类似的事情
var=0 grep "foo" bar | while read line; do var=1 done
不幸的是,这不行,因为管道导致while在subshell中运行.有没有更好的方法来做到这一点?如果有另外一个解决方案,我不需要使用“read”
我看过Bash variable scope这是相似的,但我无法从中得到任何有用的东西.
如果你真的在做一些简单的事情,你甚至不需要读取循环.以下将工作:
VAR=0 grep "foo" bar && VAR=1 # ...
如果你真的需要循环,因为循环中发生了其他一些事情,你可以从<(命令)进程替换重定向:
VAR=0 while read line ; do VAR=1 # do other stuff done < <(grep "foo" bar)