Bash 似乎没有将“出错时退出”环境标志传递给命令替换 shell。
我正在使用大量命令替换(以解决 bash 缺少返回值的问题),但如果子 shell 中的某些内容失败,我仍然希望整个脚本停止运行。
因此,例如:
set -e
function do_internet {
curl not.valid.address
}
answer=$(do_internet)
我希望脚本停在那里然后,而不是继续。(我希望设置 -e 将不必在所有内容上加上“|| die”。
难道我做错了什么; 和/或有什么办法解决这个问题吗?
这是一个小例子:
#!/bin/bash
set -e
echo "You should only see this line, and not any other line."
function foo {
false
echo "The above line is false. Figure that one out, Plato."
}
bar=$(foo)
echo $bar
它打印两行。(使用GNU bash, version 4.2.25(1)-release (x86_64-pc-linux-gnu)
)