一:exit
1.exit 数字(退出状态码):退出脚本
文件测试:
-e file:测试文件是否存在
-f file:测试文件是否为普通文件
-d file:测试指定目录是否为目录
-r|-w|-x file:测试当前用户对指定文件是否有读写执行权限
例:[-e /etc/initab]
2.多分支的if语句
if 条件1;then
......
elif 条件2;then
......
else
......
fi
3.测试脚本是否有语法错误
bash -n 脚本
bash -x 脚本:单步执行
二:bash变量的类型
1.特殊变量:
$?:上一条命令的退出状态码
$#:参数的个数
$*:参数列表
$@:参数列表
2.sed(流编辑器):默认不编辑源文件,仅对模式空间中的数据做处理,将模式空间打印至屏幕
用法:sed [选项] ‘AddressCommand’ file,...
(1)Address:
<1>startLine,EndLine 比如:1,100
$:最后一行
<2>/模式(正则表达式)/ 比如:/^root/
<3>/模式1/,/模式2/:第一次被模式1匹配到的行开始,至第一次被模式2匹配的行结束,这中间所有的行
<4>lineNumber:指定的行
<5>startline,+N:从startline开始,向后N行
(2)Command:
d:删除符合条件的行
p:显示符合条件的行
a \"string":在指定的行后面追加新行,内容为string
i \string:在指定的行前面添加新行,内容为string
r file:将指定的文件的内容添加至符合条件的行处
w file:将指定范围内的内容另存至指定的文件中
s/模式/string/修饰符:查找并替换,默认只替换每行中第一次被模式匹配到的字符串
修饰符:
g:全局替换
i:忽略字符大小写
&:引用模式匹配整个串
(3)选项
-n:静默模式,不再默认显示模式或空间中的内容
-i:直接修改源文件
-e:script -e script:可以同时执行多个脚本
-f 文件:通过将AddressCommand写到文件中去执行
-r:使用扩展正则表达式
三:实例
1.删除某文件中开头的#号及后面的空白字符
sed -r 's@^#[[:space:]]+@@g' ./sed_test.txt
2.删除某文件中以空白字符后面跟#的行中的开头的空白字符及#
sed -r 's@^[[:space:]]+#@@g' ./sed_test.txt
3.取出一个文件路径的目录名称
echo "/etc/rc.d/" | sed -r 's#^(1.*/)[^/]+/?#\1#g'
四:字符测试
==:测试是否相等
!=:测试是否不等
>:大于
<:小于
-n string:测试指定字符串是否为空,空则真
五:for循环
for 变量 in 列表;do
循环体
done
如何生成列表:
1.{1..100}
`seq [起始数] [步长] 结束数`
网友评论