trap
命令在 Linux 中被用于指定信号处理程序,当 shell 接收到指定的信号时,会执行 trap
命令定义的操作。这对于脚本编程尤其有用,因为它允许你在脚本退出前执行一些清理工作,或者捕获特定的信号来改变脚本的执行流程。
trap 'commands' signals
commands
是当 shell 接收到指定的 signals
时要执行的命令或命令序列。signals
是要捕获的信号名称或信号编号,可以是多个,用空格分隔。#!/bin/bash
trap 'echo "Script is terminating..."; exit' SIGINT SIGTERM
while true; do
echo "Running..."
sleep 1
done
在这个例子中,当脚本接收到 SIGINT 或 SIGTERM 信号时,会输出 "Script is terminating..." 并退出。
#!/bin/bash
TEMP_FILE=$(mktemp)
trap 'rm -f "$TEMP_FILE"; echo "Temporary file removed."' EXIT
# ... 使用临时文件进行一些操作 ...
在这个例子中,无论脚本如何退出,都会删除创建的临时文件。
trap
命令只在当前 shell 或脚本中有效,不会影响父 shell 或其他脚本。trap
命令中使用了变量,需要确保这些变量在信号处理程序执行时是可用的。领取专属 10元无门槛券
手把手带您无忧上云