命令扩展失败时bash脚本失败

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

如果以下命令扩展失败,我希望能够发出警告并失败:

#!/usr/bin/env bash
set -Eeuo pipefail

echo "$(invalid_cmd)"
echo "$?"

我没有失败,而是得到以下输出:

./script.sh: line 5: invalid_cmd: command not found

0
bash exit-code command-substitution
1个回答
0
投票

使用临时变量。变量赋值的退出状态是最后执行的命令的退出状态 - 在这种情况下

$(...)

tmp="$(invalid_cmd)"
ret="$?"  # won't get here, set -e will trigger
echo "$tmp"
echo "$ret"

总的来说,

echo "$(stuff)"
只是
stuff
。只需运行命令,无需获取命令输出来打印它,命令已经打印它。

invalid_cmd
echo "$?"
© www.soinside.com 2019 - 2024. All rights reserved.