如何停止 bash 脚本中的上一个命令?

gon*_*mas 0 bash node.js

我正在尝试构建一个在 Web 服务器上运行单元测试的 bash 脚本。

我希望运行一个简单的 bash 脚本,该脚本可以(例如)在 makefile 中执行以下操作:

  1. 启动网络服务器
  2. 运行单元测试
  3. 停止网络服务器

假设 Web 服务器是为 NodeJS 编写的,它可能如下所示:

npm start &
sleep 5
npm test
Run Code Online (Sandbox Code Playgroud)

这种方法的问题是 Web 服务器将继续运行。舞台结束后如何停止npm test?

cho*_*oba 5

最后启动的后台进程的 PID 存储在 $! 中,因此启动 npm 后将其拾取并在需要时将其杀死:

npm start &
npm_pid=$!
...
kill $npm_pid
Run Code Online (Sandbox Code Playgroud)

  • 也许你想要“$!”? (2认同)