EatSmartシステム部ブログ

ウェブサイトの開発や運営に関する情報です。

shellでエラーを無視する

弊社のシステムでは、Jenkinsでshellを実行してJOBやバッチ処理を行う構成があります。 Jenkinsのshell定義の中で、前処理としてファイル削除やプロセス終了をさせることがあるのですが、その前処理で例外が発生しても無視して後続の処理をさせたい場合に、 :true を使えば良いことを知りました。

:true は、戻り値として必ず0を返す関数で、これらを実際に行いたい処理の後ろに && でつなげることで、処理で例外が発生しても中断されなくなります。

ps -ef | grep [process名] | sed 's/[\t ]\+/\t/g' | cut -f2 | xargs kill -1 && :

実際の動作は :true は同じようです。以下の記事に : コマンドの色々な使い方が載っていていて、とてもためになりました。

何もしない組み込みコマンド ":" (コロン)の使い道 - Qiita

コメント的な使い方や、一時的に処理をオフにするために使えるんですね。