我有这样的代码
var="before" echo "$someString" | sed '$someRegex' | while read line do if [ $condition ]; then var="after" echo "$var" #first echo fi done echo "$var" #second echo
在这里,第一个回显是在“之后”,而第二个是在“之前”。如何在“之后”进行第二次回显打印。我认为是因为购买烟斗,我不知道该如何解决。
感谢您的解决方案…
答案编辑:
我更正了它,并且效果很好。感谢eugene的有用回答
var="before" while read line do if [ $condition ]; then var="after" echo "$var" #first echo fi done < <(echo "$someString" | sed '$someRegex') echo "$var" #second echo
出现这种现象的原因是,while循环是管道的一部分时,在子外壳中运行。对于while上面的循环,将创建一个具有其自己的变量副本的新子外壳var。
while
var
请参阅本文以获取可能的解决方法:我在管道循环中设置变量。为什么它们在循环终止后消失了?或者,为什么我不能通过管道读取数据?。