更改變量我正在寫入的警告到標準輸出的命令,我想我的腳本停止對這些警告,因此拼湊了很多東西,我在這裏學到的,我有以下。 ..在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