我在 Ubuntu Linux 14.04 上使用 bash shell。我有这个脚本...
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"
因“进程不存在”错误而终止,并且脚本不会继续(我看不到以下 echo 语句)。即使进程不再存在,如何使我的脚本继续运行?
答案1
绕过 errexit 设置而不关闭它的快速方法是使命令返回成功。
例子:
set -e
false # script exits here
与
set -e
false || true # script no longer exits
所以也许可以尝试
su - $USER -c "$SIDEKIQ_STOP_CMD" || true