sh経由で実行するとeオプションつけてても途中で終了しない
Jenkinsのシェルの実行で#!/bin/sh -xe
ってつけて途中でエラーが起きたらその時点で、
jobをfailureにするっていうのはよくあると思うんですが、
そのなかで、sh hoge.sh
みたいに別のshを起動すると、
hoge.shの中でエラーがあったときに、e
オプションつけててもhoge.shは一番最後まで実行されちゃう。
どういうことかというと、hoge.shはこんな感じだとして
#!/bin/sh -xe ls x echo "hello"
- 直接実行 -> lsで止まる
$ ./hoge.sh + ls x ls: x: No such file or directory
- sh経由で実行 -> 最後まで実行される
$ sh hoge.sh ls: x: No such file or directory hello
やっぱ、sh経由だとxeオプションつけてても途中で終わってくれないみたい。