【发布时间】:2016-03-21 11:52:18
【问题描述】:
我想从失败的命令中返回退出代码“0”。有没有更简单的方法来做到这一点,而不是:
function a() {
ls aaaaa 2>&1;
}
if ! $(a); then
return 0
else
return 5
fi
【问题讨论】:
-
return ! a怎么样 -
无需命令替换简单使用
if ! a; then ... -
如果将
stderr输出写入stdout,在命令失败的情况下,脚本将抛出一个令人讨厌的错误,可以通过使命令输出静默并仅获取命令执行来避免该错误来自$?的状态 -
如果我理解你的话,你想退出状态“OK”,如果
ls命令失败,退出状态5(顺便说一句,你为什么写return而不是exit?),如果ls命令成功。那么,为什么需要ls?查询aaaaa的存在不是更简单(也更容易理解)吗,例如[[ -e aaaaa ]] && echo 'ERROR: aaaaa exists!' && exit 5之类的东西? -
@dev-null 必须使用 cmd subst 由于 -e 并耦合其他开关