😭
diffの戻り値が1なのでビルドジョブが止まっちゃう件
この記事の概要
intro
jenkinsなど、ビルドジョブの中でコマンドの終了ステータスが1
の場合
ジョブが失敗判定になって止まることがあると思います。
でもバックアップファイルとの差分は出したいし...みたいな場合の対処法です。
diffの戻り値は1
表題の通り、diffコマンドで差分があった場合の戻り値は1です。
差分ナシ
[boomkun@laptop ~]$ diff <(echo boomkun) <(echo boomkun)
[boomkun@laptop ~]$ echo $?
0
差分アリ
[boomkun@laptop ~]$ diff <(echo boomkun) <(echo zenn)
1c1
< boomkun
---
> zenn
[boomkun@laptop ~]$ echo $?
1
この場合、ログとして差分を吐き出しているだけなのに
1
だからジョブが止まっちゃう ということが起きてしまいます。
どうハンドリングするか
||
OR演算子をdiffの直後に入れてしまえば1
が出なくなります。
[boomkun@laptop ~]$ diff <(echo boomkun) <(echo zenn) || echo difference above
1c1
< boomkun
---
> zenn
difference above
[boomkun@laptop ~]$ echo $?
0
メッセージ出したくない場合:
ヌルコマンドを実行してもいいですね。
[wsl-user@PC-387 ~]$ diff <(echo boomkun) <(echo zenn) ||:
1c1
< boomkun
---
> zenn
[boomkun@laptop ~]$ echo $?
0
outro
if文で終了ステータス見るよりも記述が簡素で良い気がしています。
他にもやり方あれば教えて下さい。
Discussion