为何参考$?明确地

Wil*_*ell 1 shell sh

很多sh代码看起来像:

$cmd
if [ $? = 0 ]; then $cmd2; fi

代替:

if $cmd; then $cmd2; fi

我通常认为人们使用前者只是因为他们不知道后者的语法是有效的,但我想知道是否还有另一个原因(尽管我想到的唯一可能性是可移植性).是否有理由更喜欢明确引用$ {?}?.

JSB*_*ոգչ 5

$?如果您确实想要使用错误代码(日志记录,处理预期错误等),则必须引用.对于您提到的特定场景,第二个if构造更清晰,更短,我认为没有理由不使用它.