您的位置:首页 > 运维架构 > Shell

shell编程详解(二)

2016-07-15 21:45 411 查看
文件测试:
-e file:测试文件是否存在
-f file:测试文件是否为普通文件
-d file:测试指定路径是否为路径
-r file:测试当前用户对指定文件是否有读权限
-w file:测试当前用户对指定文件是否有写权限
-x file:测试当前用户对指定文件是否有执行权限

测试shell是否有语法错误
bash -n xx.sh:能够见到判断脚本语法是否有错误
bash -x xx.sh:单步执行,用于脚本调试

定义脚本退出状态码:
exit:退出脚本
exit n: 0表示正常退出,1-255表示错误退出
如果脚本没有明确定义退出状态码,那么最后执行的一条命令的退出码即为脚本的退出状态码

特殊变量:
$?:上一个命令退出状态
$#:参数的个数
$*:参数列表
$@:参数列表

位置变量:shift

sed用法
sed:Stream Editor,行编辑器,默认不编辑原文件,仅对模式空间中的数据处理
sed [option] 'AddressConmand' file...
-n:静态模式,不再默认显示模式空间的内容
-i:直接修改原文件
-e script -e script:可以同时执行多个脚本
-f sedfile:可以将多个脚本放在一个里面
sed -f sedfile file
-r:表示使用正则表达式
Adress:
1、StartLine,EndLine
比如:1,100
$:表示最后一行
2、/REGEXP/
比如:/^root/
3、/pattern1/,/pattern2/
第一次被pattern1匹配到的行开始,至第一杯pattern2匹配到的行结束,这中间的所有行
4、LineNumber 指定的行
5、StartLine,+N
从Startline开始,向后的N行

Command:
d:删除符合条件的行
p:显示符合条件的行
a \string:在指定的行后面追加新行,内容为string
\n:可以用于换行
i \string:在指定的行前面添加新行,内容为string
r FILE:将指定的文件的内容添加至符合条件的行处
w FILE:将地址指定的范围内的行另存至指定的文件中
s/pattern/string/:查找并替换,默认只替换每行中第一匹配被模式匹配到的字符串
加修饰符:
g:全局替换
i:忽略大小写
s///:也可以用s###,s@@@
&:引用模式匹配整个串
例如:
l..e:like ->liker
love ->lover
sed 's#\(l..e\)#&r#g' xx.txt 或者 sed 's#\(l..e\)#\1r#g' xx.txt

本文出自 “忘记过去” 博客,请务必保留此出处http://xujingbo.blog.51cto.com/4633099/1826847
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: