如果替换命令串的命令失败,强制sh失败。

问题描述 投票:0回答:1

我想从URL中执行bash脚本。我使用 sh -c "$(curl -f ${SCRIPT_URL})". 它工作了,但如果url不正确或子脚本出错,父脚本就会成功完成。

例子:

set -e
sh -c "$(curl -f ${SCRIPT_URL})"
echo "success"

我可以通过使用一个额外的变量得到一个需要的错误。

set -e
url=$(curl -f ${SCRIPT_URL})    
sh -c "$url"
echo "success"

但是我不想使用额外的变量。可以不使用附加变量吗?

bash shell curl sh
1个回答
2
投票

编写 exit 1 如果 curl 失败,那么 sh 将会以状态为 1 的方式退出,而且 set -e 将会生效。

set -e
sh -c "$(curl -f "${SCRIPT_URL}" || echo exit 1)"
echo success

使用变量或中间文件,并处理错误而不依赖 set -e 确实是一个比较好的办法,不过。

© www.soinside.com 2019 - 2024. All rights reserved.