3

我正在寻找一个选项来对存储库进行 hg 更新或在它不存在时克隆它。因此,仅当出现问题(克隆或更新)时,该命令才会失败。

这必须工作bash,最好是如果你set -e已经配置好了。

4

2 回答 2

6

bash 中的析取运算符||, 可以做到这一点:尝试第一个命令,如果失败则尝试第二个命令,如果失败则返回错误代码。具体到这个问题,

hg update || hg clone <source>

会尝试更新;如果失败,它会尝试克隆。如果克隆失败,则整行退出并显示克隆的错误代码。

当命令成功时,我不希望在输出中看到任何错误。

为什么命令成功时会出现错误?

>/dev/null您可以通过;杀死输出 2>/dev/null您可以通过;杀死错误 无论是单独在每个组件上,还是通过将整行括在括号中并将重定向放在后面。

于 2012-05-18T13:23:22.097 回答
3
cd <directory> && hg update || hg clone <source>

如果 cd 由于目录不存在而失败,则 hg 克隆从正确的目录级别运行。

于 2013-01-15T16:24:22.413 回答