まーぽんって誰がつけたの?

iOS→Scala→インフラなおじさん技術メモ

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オプションつけてても途中で終わってくれないみたい。