Shell脚本学习笔记(六)--转向与陷阱
2011-03-16 13:39
465 查看
转向
文件代码: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
信号名称不区分大小写,在传递信号时可以使用数字代码,也可以使用信号名称。
传递信号的方法
使用内置命令kill:
kill
-信号 进程编号
kill
-s 信号 进程编号
kill
-n 信号 进程编号
kill后可以接多个进程编号,会把指定的信号都传送给这些进程。如果省略'-信号',则默认传送SIGTERM信号给进程。
Killall
-信号 进程名称
例子
执行
trap的运用
语法
trap
'触发指令' 信号串行
用途:向shell注册信号,只要系统产生此特定信号,trap就会触发,并执行trap命令中的“触发指令”
trap –
信号串行
用途:如果trap的语法中没有触发指令,而是-或空白,则可恢复信号串行原本的作用。如果曾使用trap对某些信号做过其他安排,那么在script结束前都会再用trap恢复他们原本的作用。
trap
'' 信号串行
用途:忽略系统发出的“信号串行”,不做任何发应。
kill和stop这两个信号无法用trap捕获,也无法忽略。
trap
-p
用途:列出目前trap向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<<标记
资料
...
...
标记
例子
#!/bin/bash exec 6<<EOF line1 line2 line3 EOF while read <&6 do echo $REPLY done
结果
陷阱触发
在Script的执行过程中,有时候希望能实时处理系统传来的信号,如用户按了ctrl-c,处理的方式可分为两种:接受信号或忽略信号。前者通常会
对信号安排执行特定的指令;后者主要想避免意外的状况干扰script的运行。像这种能捕捉特定信息,并作出反应的机制,称为trap(陷阱触发)
ps
auxw ps -ef
查看系统定义的信号kill
-l 或 trap -l
信号名称不区分大小写,在传递信号时可以使用数字代码,也可以使用信号名称。
传递信号的方法
使用内置命令kill:
kill
-信号 进程编号
kill
-s 信号 进程编号
kill
-n 信号 进程编号
kill后可以接多个进程编号,会把指定的信号都传送给这些进程。如果省略'-信号',则默认传送SIGTERM信号给进程。
Killall
-信号 进程名称
例子
#!/bin/bash for ((;1;)) do sleep 1 done
执行
trap的运用
语法
trap
'触发指令' 信号串行
用途:向shell注册信号,只要系统产生此特定信号,trap就会触发,并执行trap命令中的“触发指令”
trap –
信号串行
用途:如果trap的语法中没有触发指令,而是-或空白,则可恢复信号串行原本的作用。如果曾使用trap对某些信号做过其他安排,那么在script结束前都会再用trap恢复他们原本的作用。
trap
'' 信号串行
用途:忽略系统发出的“信号串行”,不做任何发应。
kill和stop这两个信号无法用trap捕获,也无法忽略。
trap
-p
用途:列出目前trap向shell注册的信号列表
相关文章推荐
- Shell脚本学习笔记(六)--转向与陷阱
- Shell 脚本专家指南 学习笔记1
- Shell脚本学习笔记(十)--文件操作
- 顶嵌学员学习笔记:Shell脚本编程总结
- Shell脚本学习笔记
- 【Shell】【学习笔记】Linux Shell脚本应用(十一)
- shell脚本学习笔记
- shell脚本学习积累笔记(第一篇)
- shell 脚本学习笔记-1 终端打印 变量 环境变量
- shell脚本学习笔记(二)—— 引字符号、db2命令选项、date
- shell脚本编程之case语句学习笔记
- shell脚本学习笔记 (流编辑器sed)
- shell脚本攻略学习笔记(一)小试牛刀
- shell脚本学习笔记 (一)
- shell 脚本语言学习笔记
- 【Shell】【学习笔记】Linux Shell脚本应用(一)
- Linux命令shell脚本编程学习笔记-18章初识sed和gawk
- Shell脚本学习笔记-函数
- 学习笔记:Shell脚本-2015-08-05
- Liunx 命令行与shell脚本编程大全 第五章学习笔记(Vim 编辑器使用详解 解释+图示)