我已经在HP / UX的以下脚本中运行并获得了输出:
Exiting #1
Exiting #2
但我希望输出:
Exiting #1
脚本文件:
data="aaa; bbb; ccc"
echo $data | while IFS=';' read -ra array; do
echo "Exiting #1"
exit -1
done
echo "Exiting #2"
exit 0
我怎么解决这个问题?谢谢。
由于管道的原因,循环中的命令在子Shell中运行。当您调用exit时,仅终止子外壳,而不终止父进程。
您可以使用shopt -s lastpipe
,通过使用流程替换来克服这一问题
while IFS=';' read -ra array; do
echo "Exiting #1"
exit -1
done < <(echo "$data")
或使用here字符串
while IFS=';' read -ra array; do
echo "Exiting #1"
exit -1
done <<< "$data"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句