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.简书

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

R-QWERT

你的鼓励是我最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值