【发布时间】:2020-10-07 08:47:48
【问题描述】:
我想从 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"
但我不想使用额外的变量。是否可以在没有额外变量的情况下做到这一点?
【问题讨论】:
-
如果脚本失败,第一个应该按照你想要的方式工作。第二个在第三行出现错误。它的使用方式看起来应该是
sh -c "$url"。看起来如果 curl 失败,它可能会返回一个很好的返回码。请参阅this 答案。 -
理想情况下,您会在
sh运行之前失败。最好在执行sh之前验证curl的完整输出是您期望的脚本。将脚本保存到文件,验证它,然后只需运行sh theScript.sh。