标签:linux
文件测试(单目):
-e file:测试文件是否存在 -f file:测试文件是否为普通文件 -d file:测试文件是否为目录 -r file:测试当前用户对指定文件是否有读取权限 -w file:测试当前用户对指定文件是否有写入权限 -x file:测试当前用户对指定文件是否有执行的权限
多分支的if语句:
if 判断条件; then
statement1
elif 判断条件2; then
statement2
elif 判断条件3; then
statement3
else
statement4
fi
测试脚本是否有语法错误:
bash -n 脚本 bash -x 脚本(单步执行)
位置变量:$1 $2 $3
例:bash w.sh /etc/passwd /etc/fstab 脚本中 $1 :就表示为/etc/passwd $2 :就表示为/etc/fstab
shift:轮替 (位置变量用过一次后就会踢出) shift n(数字):可以跳n个位置
echo "$1"
shift
echo "$1"
shift 2
echo "$1"
特殊变量:$? $#(显示参数个数) $*(显示参数列表) $@(显示参数列表)
例:if [ $# -lt 0 ]; then
注: exit 返回码(错误):退出脚本 ,定义脚本退出状态码,如果脚本设有明确定义,退出状态码那么就时最后执行的一条命令的退出码,即为脚本的退出状态码。
sed基本用法:stream editor行编辑器,
-n:静默模式(不再默认显示模式空间的内容) -i:修改源文件(一般不使用) -e script -e script..:可以同时执行多个脚本 -f /path/to/sed_script: 使用正则表达式
sed是在一段内存空间(模式空间)中处理文件的,所以不会直接编辑源文件,然而,处理结束后,将模式空间的内容打印到屏幕上(所以有时候显示为重复的两行)
sed address(地址) command file...
Address:
1.startline,endline
2./pattern(regexp)/
3. /pattern1/,/pattern2/(第一次被1匹配到的行至第一次被2匹配到的行结束,中间的所有行)
4.linenumber:指定的行,$:最后一行 $-1:倒数第二行
5.startline,+n:从startline开始,向后的n行;
Commad:
d:删除符合条件的行(例:sed ‘1,2d’(双引号为变量引用)/etc/fstab) p:显示符合条件的行 a\string:在指定的行后面追加新行(例:‘/^\//a \#....’/etc/passwd或/^\//a \#...\n...) i \string: 在 指定的行前面追加新行 r file:将指定的文件的内容添加至符合条件的行出(例:sed ‘2r /etc/fstab’/etc/passwd) w file: 将指定范围内的内容另存至指定的文件中(例:‘/root/w /etc/passwd’/etc/fstab)
s :查找并替换 s/pattern/string/ (例:s/^\//#/ /etc/passwd)默认只替换每行中第一次匹配到的字符串,加修饰符:g(全屏替换s///g) i:忽略大小写 。(s除了///还可以使用### @@@ 等...) &:引用模式匹配整个串(sed ‘s#/r..t/#&r#g‘ /etc/passwd) 也支持后向引用 (sed ‘s#\(r..t\)#\1r#g’ /etc/passwd) (只改变单个首字母:sed ‘s#r(..t\)#R\1#g’ /etc/passwd) 在4到末行的每行前面加eee:sed ‘4,$s/^.*/eee&/’***(若&eee则在每行后面添加eee)
字符测试:
==(或=) :比较,相等为真,不等为假 :[$A = $B] != : 不等为真,相等为假 > < >= <= -n string:测试指定字符串是否为空,空则真,不空则假 -z string:测试指定字符串是否为空,空则假,不空则真
for循环:进入条件,退出条件
for 变量 in 列表;do
循环体
done
生成列表;{1..100}
seq 10 : 1--10 seq 5 10: 5--10 seq2 2 10: 2 4 6 8 10 seq 1 2 10: 1 3 5 7 9
seq : 起始数 步进长度 结束数
declare -n(声明变量类型) Num=0 -x :环境变量
例:LINE=`wc -l /etc/passwd | cut -d‘ ’ -f1`
for I in `seq | $LINE`; do
echo "###,`head -n $I /etc/passwd | tail -1 |cut -d: -f1`";done
本文出自 “笨鸟先辉” 博客,请务必保留此出处http://benniaoxianhui.blog.51cto.com/10463960/1679200
linux 笔记--文件测试,特殊变量,sed命令,字符串测试及for循环
标签:linux
原文地址:http://benniaoxianhui.blog.51cto.com/10463960/1679200