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

信号处理

在 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[@] # 删除数组中的所有元素
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值