我应该在条件中嵌入命令还是测试其返回码?

jon*_*din 2 bash exit patterns

这是一个关于最佳实践的简单问题:我应该使用哪个?

选项1

ping -c1 "$host"

if [[ $? -eq 0 ]] ; then
   command
else
   command
fi
Run Code Online (Sandbox Code Playgroud)

选项 2

if ping -c1 "$host" ; then
   command
else
   command
fi
Run Code Online (Sandbox Code Playgroud)

我知道这是一个简单的命令,但如果它变大,差异可能会很大。

vin*_*c17 5

这是一个偏好问题,但如果您打算添加一个,第二种形式可能更安全set -e:这种形式仍将按预期工作,而第一种形式,如果ping失败,脚本将立即结束(以非零退出状态返回)。

注意:运算符是-eq,不是eq