我在 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 时,只有子 shell 被终止,而不是父进程。
您可以通过使用 shopt -s lastpipe
和进程替换来克服这个问题
while IFS=';' read -ra array; do
echo "Exiting #1"
exit -1
done < <(echo "$data")
或者通过使用这里字符串
while IFS=';' read -ra array; do
echo "Exiting #1"
exit -1
done <<< "$data"
关于Bash 脚本不会在循环中退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20798961/