Bash 脚本中的 Ctrl-C

Bash 脚本中的 Ctrl-C

如何在 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

相关内容