当前位置:   article > 正文

Linux shell:trap命令使用简介_shell trap

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

现象:

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$ 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

示例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!"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

现象:

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

2、删除信号捕获

用法:trap – ‘’ 信号声明

示例:

#!/bin/bash

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

while true;do
    echo "Loop..."
    sleep 2
done
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

现象:

book@book-VirtualBox:~/trap_test$ ./test.sh 
Loop...
Loop...
^C^CLoop...
^CLoop...
^Z
[16]+  已停止               ./test.sh
book@book-VirtualBox:~/trap_test$ 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/197464
推荐阅读
相关标签
  

闽ICP备14008679号