如何在 bash 脚本中实现ctrl+c处理以便中断脚本以及脚本启动的当前运行的命令?
(假设有一个脚本执行一些长时间运行的命令。用户点击ctrl+c并中断命令,但脚本继续执行。)我需要它以一种让它们都被杀死的方式运行。
答案1
您可以通过创建一个在收到 SIGINT 时要调用的子例程来执行此操作,并且需要运行trap 'subroutinename' INT
。
例子:
#!/bin/bash
int_handler()
{
echo "Interrupted."
# Kill the parent process of the script.
kill $PPID
exit 1
}
trap 'int_handler' INT
while true; do
sleep 1
echo "I'm still alive!"
done
# We never reach this part.
exit 0