Ubuntu Linux 14.04でbashシェルを使用しています。このスクリプトがあります...
SIDEKIQ_PID="$APP_ROOT/tmp/sidekiq.pid"
SIDEKIQ_STOP_CMD="cd $APP_ROOT && bundle exec sidekiqctl stop $SIDEKIQ_PID 0"
...
su - $USER -c "$SIDEKIQ_STOP_CMD"
echo "Stopped sidekiq"
私が気づいたのは、ファイル「$ SIDEKIQ_PID」に定義されているPIDがもう存在しない場合は、次の行です。
su - $USER -c "$SIDEKIQ_STOP_CMD"
「プロセスは存在しません」エラーで終了し、スクリプトは続行されません(次のエコーステートメントは表示されません)。プロセスがもう存在しなくてもスクリプトを実行し続けるにはどうすればよいですか?
答え1
errexit設定をオフにせずにバイパスする簡単な方法は、コマンドを成功させることです。
例:
set -e
false # script exits here
そして
set -e
false || true # script no longer exits
だから試してみてください。
su - $USER -c "$SIDEKIQ_STOP_CMD" || true