Shell脚本学习笔记(六)--转向与陷阱

转向

 

文件代码:0,1,2,... < 输入 > 输出

转向语义大部分不能单独使用,必须和Bash 命令一起运用

 

操作文件:

fd<> 文件 fd 文件代码,可供读写

fd<&- 关闭输入文件

fd>&- 关闭输出文件

n<&m 复制转向输入的文件代码m ,存成文件代码n ,使n 连接至m

n>&m 复制转向输出的文件代码m ,存成文件代码n ,使n 连接至m

 

一旦备份好标准输入后,就可以对标准输入进行操作,完毕后还原标准输入,如下:exec 0<&5 5<&-

 

转向的用法:

转向输入 fd< 文件

转向输出 fd> 文件 set -o noclobber set -C 不覆盖 fd>| 文件 强制覆盖

转向附加 fd>> 文件

标准错误伴随标准输出做转向:&> 文件 或 >& 文件

 

Here Document 转向

fd<< 标记

资料

...

...

标记

例子

   

结果

 

 

陷阱触发

 

在Script的执行过程中,有时候希望能实时处理系统传来的信号,如用户按了ctrl-c,处理的方式可分为两种:接受信号或忽略信号。前者通常会

对信号安排执行特定的指令; 后者主要想避免意外的状况干扰script 的运行。像这种能捕捉特定信息,并作出反应的机制,称为trap( 陷阱触发)

 

ps auxw ps -ef

查看系统定义的信号kill -l 或 trap -l


 

信号名称不区分大小写,在传递信号时可以使用数字代码,也可以使用信号名称。

 

p { margin-bottom: 0.21cm; }

传递信号的方法

使用内置命令kill :

kill - 信号 进程编号

kill -s 信号 进程编号

kill -n 信号 进程编号

kill 后可以接多个进程编号,会把指定的信号都传送给这些进程。如果省略'- 信号' ,则默认传送SIGTERM 信号给进程。

Killall - 信号 进程名称

例子

   

执行

 

p { margin-bottom: 0.21cm; }

trap 的运用

语法

trap ' 触发指令' 信号串行

用途:向shell 注册信号,只要系统产生此特定信号,trap 就会触发,并执行trap 命令中的“触发指令”

 

trap – 信号串行

用途:如果trap 的语法中没有触发指令,而是- 或空白,则可恢复信号串行原本的作用。如果曾使用trap 对某些信号做过其他安排,那么在script 结束前都会再用trap 恢复他们原本的作用。

 

trap '' 信号串行

用途:忽略系统发出的“信号串行”,不做任何发应。

kill 和stop 这两个信号无法用trap 捕获,也无法忽略。

 

trap -p

用途:列出目前trap 向shell 注册的信号列表

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值