如果 bash 命令成功或失败,我如何让整个 bash 脚本退出(包括后台进程)?
How do I get entire bash script to exit (including backgrounded processes) if a bash command succeeds or fails?
我有以下 bash 脚本。我要运行三个命令
- 第一个命令启动一个前端 Web 服务器,我想将其作为后台。
- 第二个命令启动后端 Web 服务器,我想将其作为后台。
- 第三个命令运行是一个测试网络应用程序的 npm 脚本。
如果测试不成功,第三个命令将退出并显示错误代码。
如果第三条命令以错误结束,我如何让我的整个 bash 脚本以错误代码退出?如果第三条命令没有错误地完成,我希望我的 bash 脚本以 0 错误代码退出。
以下是我的尝试(脚本没有按预期运行)。我的意图是让所有后台进程在 npm run my-special-command
之后结束。如果 npm run my-special-command
导致错误代码,我希望我的脚本以该错误代码退出。否则,我希望我的脚本以 0 错误代码退出。
#!/bin/bash
history-server dist -p 8080 &
nodemon server &
npm run my-special-command || exit 1
exit 0
您可以使用命令替换:
# save PID of background process
history-server dist -p 8080 &
history_server_pid=$!
# if command succeds exit 0; else terminate background process and exit 1
if [ $(npm run my-special-command 2>/dev/null) ]; then
exit 0
else
kill $history_server_pid
exit 1
fi
如果命令成功,脚本将退出,状态为 0,否则为 1。
我有以下 bash 脚本。我要运行三个命令
- 第一个命令启动一个前端 Web 服务器,我想将其作为后台。
- 第二个命令启动后端 Web 服务器,我想将其作为后台。
- 第三个命令运行是一个测试网络应用程序的 npm 脚本。
如果测试不成功,第三个命令将退出并显示错误代码。
如果第三条命令以错误结束,我如何让我的整个 bash 脚本以错误代码退出?如果第三条命令没有错误地完成,我希望我的 bash 脚本以 0 错误代码退出。
以下是我的尝试(脚本没有按预期运行)。我的意图是让所有后台进程在 npm run my-special-command
之后结束。如果 npm run my-special-command
导致错误代码,我希望我的脚本以该错误代码退出。否则,我希望我的脚本以 0 错误代码退出。
#!/bin/bash
history-server dist -p 8080 &
nodemon server &
npm run my-special-command || exit 1
exit 0
您可以使用命令替换:
# save PID of background process
history-server dist -p 8080 &
history_server_pid=$!
# if command succeds exit 0; else terminate background process and exit 1
if [ $(npm run my-special-command 2>/dev/null) ]; then
exit 0
else
kill $history_server_pid
exit 1
fi
如果命令成功,脚本将退出,状态为 0,否则为 1。