shell 脚本编程学习(七) 信号和数组

来源:互联网 发布:java还能火几年 编辑:程序博客网 时间:2024/06/18 11:04

信号处理

在 linux 中信号用来通知进程发生的异步事件,例如我们按下 ctrl + c 键将向当前进程发送 SIGINT 即程序终止(interrupt)信号,顾名思义这个信号的默认处理方式是终止程序,但有时我们想在终止前做一些自定义的处理比如记录日志,删除临时文件等,在 shell 脚本中我们可以用 trap 命令来捕获和处理信号。

#!/bin/bash# 处理终止信号例子# 自定以的终止信号处理函数onInt () {    # 在终止前打印信号接收时间和信号名    echo "$(date) SIGINT"}# 用 trap 命令捕获 SIGINT 即 2 信号,指定 onInt 为处理函数trap onInt 2# cat 命令等待用户输入,这样我们才有机会按 ctrl + c 发送信号cat

trap 后面可以跟多个信号,从而为多个信号指定同一个处理函数。如果要为不同的信号指定不同的处理函数,多用几次 trap 命令即可。

数组

数组是很实用的一种数据结构,shell 脚本也支持数组,使用方法如下:

#!/bin/bash# shell 数组用法# 指定数组某一项的值array1[0]=1# 声明数组的多个值,他们的键将从 0 开始递增array2=(1 2 3 4)# 通过键值对的方式同时设置数组的多个键值array3=([0]=1 [3]=2 [7]=3 [10]=4)# 取数组的值,使用 ${} 花括号的形式解引用${array1[0]}# 也可以用一些特殊符号来获得数组数据${array2[@]} # 获得数组的所有内容${#array2[@]} # 获得数组的长度# 截取数组${array2[@]:3} # 下标 3 以及它之后的元素组成的子数组${array2[@]:3:2} # 从下标 3 开始取 2 个元素组成的子数组# 从数组中删除元素unset array2[1] # 删除数组下标为 1 的元素unset array2[@] # 删除数组中的所有元素
原创粉丝点击