如果bash语句的子shell错误

时间:2015-07-11 04:51:46

标签: bash shell

是否有一个简洁,通用,惯用的bash结构,当它调用错误的子shell时会强制语句出错?例如,

cd $(git rev-parse --show-toplevel)
即使0命令错误,

总是会返回git,这会使得编写

之类的内容变得很困难
cd $(git rev-parse --show-toplevel) && echo 'Success!'

当然你可以做到以下几点,但我想知道是否有更好的方法:

DIR=$(git rev-parse --show-toplevel) && cd $DIR && echo 'Success!'

1 个答案:

答案 0 :(得分:1)

这不是一般的解决方案,但在那个例子中你可以做到:

cd $(git rev-parse --show-toplevel || echo -@) && echo 'Success!'

如果替换中的命令失败,此解决方案将输出转换为命令将不接受的内容。