3

リポジトリで hg 更新を実行するオプション、またはリポジトリが存在しない場合はクローンを作成するオプションを探しています。そのため、何か問題が発生した場合 (クローンまたは更新) にのみコマンドが失敗する必要があります。

bashできれば、set -eすでに構成されている場合は、で機能する必要があります。

4

2 に答える 2

6

bash の分離演算子 は、||次のシナリオを実行できます。最初のコマンドを試して、失敗した場合は 2 番目のコマンドを試し、失敗した場合はエラー コードを返します。この質問に固有の、

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 に答える