Linux shell:trap命令使用简介

1、添加信号捕获

用法:trap [-lp] [[参数] 信号声明 …]

可以捕捉Linux进程的信号、也可以捕捉shell脚本运行过程的信号;信号处理可以单纯打印信息、也可以调用函数处理;支持多次修改同一个信号捕捉等等…

示例1: 打印信息

#!/bin/bash

echo 'I am testing the "trap" command...'

# Capture "Ctrl + c"
trap 'echo "You have press Ctrl-c"' SIGINT


while true;do
    echo "Loop..."
    sleep 2
done

现象:

book@book-VirtualBox:~/trap_test$ ./test.sh 
I am testing the "trap" command...
Loop...
Loop...
^CYou have press Ctrl-c
Loop...
Loop...
^CYou have press Ctrl-c
Loop...
^CYou have press Ctrl-c
Loop...
^Z
[4]+  已停止               ./test.sh
book@book-VirtualBox:~/trap_test$ 

示例2: 调用函数

#!/bin/bash

echo 'I am testing the "trap" command...'

function exit_handler(){
    
    
    echo "Goodbye!"
}

# Capture "Ctrl + c"
trap 'exit_handler' EXIT

sleep 2
echo "Shell script exit!"

现象:

book@book-VirtualBox:~/trap_test$ ./test.sh 
I am testing the "trap" command...
Shell script exit!
Goodbye!
book@book-VirtualBox:~/trap_test$ 

2、删除信号捕获

用法:trap – ‘’ 信号声明

示例:

#!/bin/bash

# Disable capture "Ctrl + c"
trap -- '' SIGINT

while true;do
    echo "Loop..."
    sleep 2
done

现象:

book@book-VirtualBox:~/trap_test$ ./test.sh 
Loop...
Loop...
^C^CLoop...
^CLoop...
^Z
[16]+  已停止               ./test.sh
book@book-VirtualBox:~/trap_test$ 

参考文章:Linux的trap命令–SnailTyan.简书

猜你喜欢

转载自blog.csdn.net/weixin_44498318/article/details/113876171