更改变量我正在写入的警告到标准输出的命令,我想我的脚本停止对这些警告,因此拼凑了很多东西,我在这里学到的,我有以下。 ..在shell脚本循环
warnd=false;
myLongCommand |
while IFS= read -r line
do
if [[ $line == *"WARNING in ."* ]]; then
warnd=true;
echo "found a warning!!!!!"
break
fi
echo $line
done
echo WARNING IS $warnd
if [[ "$warnd" == true ]]; then
echo "exiting due to warning"
exit
else
echo "no warnings"
fi
但是,这并不如我所料。当myLongCommand写入警告时,我看到以下回显:...
发现警告!!!!!
警告是假的
没有警告
为什么不是改变我在循环后看到warnd
变量。我读过有关shell脚本变量的作用域,但似乎没有任何表明该循环内的变量具有不同的范围。
变化'myLongCommand |对于;请; done'到'对;待办事项;完成<<(mylongcommand)'。管道打开一个子shell,并且当它完成关闭它,导致子shell设置任何变量丢失。 – 123