リポジトリで hg 更新を実行するオプション、またはリポジトリが存在しない場合はクローンを作成するオプションを探しています。そのため、何か問題が発生した場合 (クローンまたは更新) にのみコマンドが失敗する必要があります。
bash
できれば、set -e
すでに構成されている場合は、で機能する必要があります。
bash の分離演算子 は、||
次のシナリオを実行できます。最初のコマンドを試して、失敗した場合は 2 番目のコマンドを試し、失敗した場合はエラー コードを返します。この質問に固有の、
hg update || hg clone <source>
更新を試みます。失敗すると、クローンを作成しようとします。複製が失敗した場合、行全体が複製のエラー コードで終了します。
コマンドが成功したときに出力にエラーが表示されないようにしたいと思います。
コマンドが成功したときにエラーが発生するのはなぜですか?
次の方法で出力を強制終了でき>/dev/null
ます。エラーを殺すことができます2>/dev/null
; 各コンポーネントで個別に、または行全体を括弧で囲み、リダイレクトを後に配置します。
cd <directory> && hg update || hg clone <source>
ディレクトリが存在しないためにCDが失敗した場合、hgクローンは正しいディレクトリレベルから実行されます。