在bash中读取多行而不产生新的subshel​​l?

前端之家收集整理的这篇文章主要介绍了在bash中读取多行而不产生新的subshel​​l?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在做一些类似的事情
var=0  
grep "foo" bar | while read line; do  
   var=1  
done

不幸的是,这不行,因为管道导致while在subshel​​l中运行.有没有更好的方法来做到这一点?如果有另外一个解决方案,我不需要使用“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)

猜你在找的Bash相关文章