我可以启动一个 .sh 脚本来启动程序但也关闭它吗?

我可以启动一个 .sh 脚本来启动程序但也关闭它吗?

所以我不确定这是否有意义,所以我会尝试详细说明。

我有这个程序(前端),可以使用 ./frontend 启动。终端将停留在程序上,直到您输入! (或 ctrl C)。我想做的就是这样

./frontend.sh 
Wait 30
!

但它卡在了程序上。我还可以在另一个终端中使用 Killall 前端来杀死它,但这并不能帮助我在脚本中做到这一点。我有什么办法可以克服这个问题吗?

答案1

除非另有说明,外壳程序按顺序执行每个命令。如果您的脚本调用frontend.sh, 并且 frontend.sh不退出,那么 shell 将只是等待它退出,而不会执行以下命令。

实现目标的一种方法是frontend.sh在后台启动&操作员,然后通过将其进程 ID(可通过特殊参数获得$!)传递给kill命令来终止它。

#!/bin/sh

# start frontend.sh in the background
./frontend.sh &

sleep 30

# the special parameter $! holds the process ID of the last background process
if kill $!; then
    echo "frontend.sh was killed, do more work here"
else
    echo "failed to kill frontend.sh, handle the error here"
fi

相关内容