使用Ctrl+C组合键:在运行脚本时,可以使用Ctrl+C组合键来中断脚本的执行并退出。这将发送一个中断信号给脚本,使其立即停止执行。 使用trap命令:可以使用trap命令来捕获特定的信号,并在接收到信号时执行指定的命令。通过在脚本中设置trap命令,可以在接收到特定信号时退出脚本。例如,使用trap "exit" INT可以在接收到...
[root@www~]# trap'echo -e "\nCTRL_C PRESSED"'SIGINT[root@www~]#^C#此处是同时按下:CTRL+C的结果,并不是输入^CCTRL_CPRESSED[root@www~]# 上面例子就是捕获CTRL+C, 当CTRL+C 按下的时候会产生SIGINT信号,trap捕获这个SIGINT信号,并执行 ‘echo -e "\nCTRL_C PRESSED"’这个命令,最终输出echo命...
在Bash中,可以使用Trap命令来捕获和处理信号。Trap命令的基本语法如下: trap 'commands' signals 其中,commands是要执行的命令序列,signals是要捕获的信号列表。 例如,如果你想在脚本收到SIGINT(通常是Ctrl+C)时执行一个清理操作,可以这样写: #!/bin/bash # 定义一个函数来执行清理操作 cleanup() { echo "清理...
INT:编号2,用户按下 Ctrl + C,意图让脚本中止运行。 QUIT:编号3,用户按下 Ctrl + 斜杠,意图退出脚本。 KILL:编号9,该信号用于杀死进程。 TERM:编号15,这是kill命令发出的默认信号。 EXIT:编号0,这不是系统信号,而是 Bash 脚本特有的信号,不管什么情况,只要退出脚本就会产生。 trap命令响应EXIT信号的写法如下。
$ trap[动作][信号] 上面代码中,"动作"是一个 Bash 命令,"信号"常用的有以下几个。 HUP:编号1,脚本与所在的终端脱离联系。 INT:编号2,用户按下 Ctrl + C,意图让脚本中止运行。 QUIT:编号3,用户按下 Ctrl + 斜杠,意图退出脚本。 KILL:编号9,该信号用于杀死进程。
SIGINT,2,ctrl+c SIGTSTP,18,ctrl+z,暂停 trap 'func "abc"' SIGINT,收到这个信号时,执行指定的代码 trap -- SIGINT,删除信号追踪 脚本示例 #! /bin/bash trap 'func "abc"' SIGINT trap "echo Goodbye." EXIT index=0 func() { echo 'abc', $1 index=$[index+1]if [ $index -ge 10 ...
$trap[动作] [信号] 上面代码中,"动作"是一个 Bash 命令,"信号"常用的有以下几个。 HUP:编号1,脚本与所在的终端脱离联系。 INT:编号2,用户按下 Ctrl + C,意图让脚本中止运行。 QUIT:编号3,用户按下 Ctrl + 斜杠,意图退出脚本。 KILL:编号9,该信号用于杀死进程。
除非遭遇一个非法的信号,否则trap命令的返回状态是0。trap命令带一组选项,在Bash的info页面中有记录。 这里有个非常简单的例子,从用户处捕捉Ctrl+C, upon which a message is printed. 当你尝试着不指定KILL信号来杀掉这个程序时,什么都不会发生: #!/bin/bash ...
trap "{ echo 'Terminated with Ctrl+C'; }" SIGINT 因此,上文中脚本的缺陷可以通过使用 trap 捕获SIGINT、SIGTERM、进程错误退出、进程正常退出等信号,并正确处理临时目录的方式来修复: #!/usr/bin/env bash CWD=`pwd` TMP=${TMP:-/tmp/tmpdir} trap \ "{ /usr/bin/rm -r "${TMP}" ; exit 255...
trap 'echo "Ctrl+C被触发"' INT 这个脚本将在按下Ctrl+C时输出一条消息。 错误处理 可以使用set -e命令来使脚本在遇到错误时立即退出。可以使用set +e命令来取消这个设置,使脚本继续执行。 这些是一些Bash脚本的高级功能。通过学习和使用这些功能,你可以更高效地编写自己的Bash脚本。