我正在寻找一个选项来对存储库进行 hg 更新或在它不存在时克隆它。因此,仅当出现问题(克隆或更新)时,该命令才会失败。
这必须工作bash
,最好是如果你set -e
已经配置好了。
bash 中的析取运算符||
, 可以做到这一点:尝试第一个命令,如果失败则尝试第二个命令,如果失败则返回错误代码。具体到这个问题,
hg update || hg clone <source>
会尝试更新;如果失败,它会尝试克隆。如果克隆失败,则整行退出并显示克隆的错误代码。
当命令成功时,我不希望在输出中看到任何错误。
为什么命令成功时会出现错误?
>/dev/null
您可以通过;杀死输出 2>/dev/null
您可以通过;杀死错误 无论是单独在每个组件上,还是通过将整行括在括号中并将重定向放在后面。
cd <directory> && hg update || hg clone <source>
如果 cd 由于目录不存在而失败,则 hg 克隆从正确的目录级别运行。