Linux Can';t在bash中使用变量out of while和pipe
我有这样的密码Linux Can';t在bash中使用变量out of while和pipe,linux,bash,environment-variables,pipe,Linux,Bash,Environment Variables,Pipe,我有这样的密码 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 这里第一个回音打印“之后”,但第二个是“之前”。如何在“之后”进行第二次回显打印。我想是因为买
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
这里第一个回音打印“之后”,但第二个是“之前”。如何在“之后”进行第二次回显打印。我想是因为买烟斗的缘故,我不知道该怎么解释
感谢您提供的任何解决方案
答案编辑:
我纠正了它,效果很好。谢谢尤金的回答
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
var=“之前”
读行时
做
如果[$条件];然后
var=“之后”
echo“$var”#第一个echo
fi
done<此行为的原因是while
循环作为管道的一部分在子shell中运行。对于上面的while
循环,将创建一个新的子shell,其中包含变量var
的副本
有关可能的解决方法,请参阅本文: