测试开发进阶(四十一)
校验Shell格式
https://www.shellcheck.net/
流程控制
while
只要满足条件,就一直循环
while 条件
do
执行语句
done
#!/bin/bash
#Author:zhongxin
-
a=1
while [ ${a} -lt 5 ]
do
echo ${a}
a=$((${a}+1))
done
case
case 变量名 in
值1)
指令1
值2)
指令2
值3)
指令3
*)
# 条件都不满足
指令4
esac
#!/bin/bash
#Author:zhongxin
-
case "$2" in
+)
echo "$1 + $3 = $(($1+$3))"
;;
-)
echo "$1 - $3 = $(($1-$3))"
;;
\*)
echo "$1 * $3 = $(($1*$3))"
;;
/)
echo "$1 / $3 = $(($1/$3))"
;;
*)
echo "$2 不是合法的运算符"
;;
esac
文本处理三剑客
grep
sed
awk
grep
grep[option][pattern][file1,file2]
some command|grep[option][pattern]
常用选项
-i
忽略大小写
-c
只输出匹配行的数量
-n
显示行号
-r
递归搜索
-E
支持拓展正则表达式
-w
匹配整个单词
-l
只列出匹配的文件名
-F
不支持正则,按字符串字面意思进行匹配
最基础用法
$ grep mail passwd
大小写不敏感
$ grep New passwd
$ grep New passwd -i
匹配有多少行符合要求
$ grep New passwd -i -c
1
显示匹配的内容的行号
$ grep New passwd -i -n
查找路径下的内容
$ grep -r "bash" ./
只输出文件名
$ grep -rl "bash" ./
正则匹配
$ grep "s{2}" passwd -E
匹配整个单词
$ grep "oo" passwd -w
$ grep "root" passwd -w
实例
/dev/null
相当于linux中的回收站
$ grep "$USER" passwd > /dev/null && echo "$USER是存在的"|| echo "$USER是不存在的"
查看是否运行了docker
-v
:排除
# 查看ps中包含docker的内容
$ ps -aux | grep docker
root 24521 0.0 0.0 14224 1088 pts/0 S+ 23:21 0:00 grep --color=auto docker
-
# 排除grep
$ ps -aux | grep docker | grep -v grep
-
# 查看符合的个数
$ ps -aux | grep docker | grep -v grep | wc -l
0
sed
流编辑器,对文本进行逐行处理
sed[option]"pattern command"file
some command|sed[option]"pattern command"
常用选项 [option]
-n
只打印模式匹配的行
-f
加载存放动作的文件
-r
支持拓展正则
-i
直接修改文件
匹配模式 pattern
5
只处理第五行
5,10
只处理第五行到第十行
/pattern1/
只处理能匹配到pattern1的行
/pattern1/,/pattern2/
只处理从匹配到pattern1的行到匹配pattern2的行
command
命令
查询 p
新增
a
在匹配行的后面新增i
在匹配行前新增r
外部文件读入,行后新增w
匹配行写入外部文件
删除 d
修改
s/old/new
,只修改匹配行中第一个olds/old/new/g
修改匹配行中所有的olds/old/new/ig
忽略大小写
p
相当于print
匹配的行打印两次
原始行+匹配的行
$ sed "p" passwd
只打印匹配的行
$ sed -n "p" passwd
匹配 mail
的那行
$ sed "/mail/ p" passwd -n
匹配以s开头的内容
$ sed -n "/^s/ p" passwd
匹配mail开头的行到s开头的行
$ sed -n "/^mail/,/^s/ p" passwd
在3,4,5行前面添加内容
$ sed '3,5 i Add content before the current line' passwd
正式写入需要加 -i
$ sed -i '3,5 i Add content before the current line' passwd
插入文件的内容
$ echo "testfile" >> a.txt
$ sed -i '/man/,/mail/ r a.txt' passwd
匹配内容写入文件
$ sed -i '/man/,/mail/ w b.txt' passwd
删除内容
$ sed -i '/test/ d' passwd
修改
$ sed '3,6 s/nologin/666/' passwd |head
推荐阅读
-
字节测试开发面试题总结
-
Java自动化测试系列[v1.0.0][TestNG测试开发环境配置]
-
测试开发进阶(四十一)
-
百度测试开发面试题
-
Java开发熟手该当心的11个错误 博客分类: Java java多线程单元测试jvm
-
Java开发熟手该当心的11个错误 博客分类: Java java多线程单元测试jvm
-
Grails的数据库相关开发 博客分类: grails和groovy数据库 grailsgroovy单元测试框架
-
Eclipse开发经典教程:SWT布局(2) 博客分类: Java Eclipse单元测试
-
TDD Test Driven Development 测试驱动开发 博客分类: Software Process TDD软件测试UML工作
-
软件工程中的经济行为与软件架构师的工作 博客分类: 架构乱弹 工作软件测试敏捷开发项目管理编程