如果其子外壳错误导致bash语句出错
问题描述:
是否有一个简洁的,通用的,惯用的bash结构,当子shell调用错误时会强制语句发生错误?例如,如果其子外壳错误导致bash语句出错
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!'
答
这不是很普遍的解决方案,但在例如,你可以这样做:
cd $(git rev-parse --show-toplevel || echo [email protected]) && echo 'Success!'
该解决方案将输出转换为命令在替换命令失败时不会接受的内容。
'set -e'是一种方法。 –