小编典典

无法在一段时间内使用变量并将其放入bash中

linux

我有这样的代码

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

阅读 230

收藏
2020-06-07

共1个答案

小编典典

出现这种现象的原因是,while循环是管道的一部分时,在子外壳中运行。对于while上面的循环,将创建一个具有其自己的变量副本的新子外壳var

请参阅本文以获取可能的解决方法:我在管道循环中设置变量。为什么它们在循环终止后消失了?或者,为什么我不能通过管道读取数据?

2020-06-07