欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

测试开发进阶(四十一)

程序员文章站 2024-03-21 23:49:16
...

校验Shell格式

https://www.shellcheck.net/

测试开发进阶(四十一)

流程控制

while

只要满足条件,就一直循环

  1. while 条件

  2. do

  3. 执行语句

  4. done

  1. #!/bin/bash

  2. #Author:zhongxin

  3. a=1

  4. while [ ${a} -lt 5 ]

  5. do

  6. echo ${a}

  7. a=$((${a}+1))

  8. done

case

  1. case 变量名 in

  2. 1)

  3. 指令1

  4. 2)

  5. 指令2

  6. 3)

  7. 指令3

  8. *)

  9. # 条件都不满足

  10. 指令4

  11. esac

  1. #!/bin/bash

  2. #Author:zhongxin

  3. case "$2" in

  4. +)

  5. echo "$1 + $3 = $(($1+$3))"

  6. ;;

  7. -)

  8. echo "$1 - $3 = $(($1-$3))"

  9. ;;

  10. \*)

  11. echo "$1 * $3 = $(($1*$3))"

  12. ;;

  13. /)

  14. echo "$1 / $3 = $(($1/$3))"

  15. ;;

  16. *)

  17. echo "$2 不是合法的运算符"

  18. ;;

  19. esac

测试开发进阶(四十一)

文本处理三剑客

  • grep

  • sed

  • awk

grep

  • grep[option][pattern][file1,file2]

  • some command|grep[option][pattern]

常用选项

-i忽略大小写

-c只输出匹配行的数量

-n显示行号

-r递归搜索

-E支持拓展正则表达式

-w匹配整个单词

-l只列出匹配的文件名

-F不支持正则,按字符串字面意思进行匹配

最基础用法

  1. $ grep mail passwd

测试开发进阶(四十一)

大小写不敏感

  1. $ grep New passwd

  2. $ grep New passwd -i

测试开发进阶(四十一)

匹配有多少行符合要求

  1. $ grep New passwd -i -c

  2. 1

显示匹配的内容的行号

  1. $ grep New passwd -i -n

测试开发进阶(四十一)

查找路径下的内容

  1. $ grep -r "bash" ./

测试开发进阶(四十一)只输出文件名

  1. $ grep -rl "bash" ./

测试开发进阶(四十一)

正则匹配

  1. $ grep "s{2}" passwd -E

测试开发进阶(四十一)

匹配整个单词

  1. $ grep "oo" passwd -w

  2. $ grep "root" passwd -w

测试开发进阶(四十一)

实例

/dev/null相当于linux中的回收站

  1. $ grep "$USER" passwd > /dev/null && echo "$USER是存在的"|| echo "$USER是不存在的"

测试开发进阶(四十一)

查看是否运行了docker

-v:排除

  1. # 查看ps中包含docker的内容

  2. $ ps -aux | grep docker

  3. root 24521 0.0 0.0 14224 1088 pts/0 S+ 23:21 0:00 grep --color=auto docker

  4. # 排除grep

  5. $ ps -aux | grep docker | grep -v grep

  6. # 查看符合的个数

  7. $ ps -aux | grep docker | grep -v grep | wc -l

  8. 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,只修改匹配行中第一个old

  • s/old/new/g修改匹配行中所有的old

  • s/old/new/ig忽略大小写


p相当于print

匹配的行打印两次

原始行+匹配的行

  1. $ sed "p" passwd

只打印匹配的行

  1. $ sed -n "p" passwd

匹配 mail的那行

  1. $ sed "/mail/ p" passwd -n

测试开发进阶(四十一)

匹配以s开头的内容

  1. $ sed -n "/^s/ p" passwd

测试开发进阶(四十一)

匹配mail开头的行到s开头的行

  1. $ sed -n "/^mail/,/^s/ p" passwd

测试开发进阶(四十一)

在3,4,5行前面添加内容

  1. $ sed '3,5 i Add content before the current line' passwd

测试开发进阶(四十一)

正式写入需要加 -i

  1. $ sed -i '3,5 i Add content before the current line' passwd

测试开发进阶(四十一)

插入文件的内容

  1. $ echo "testfile" >> a.txt

  2. $ sed -i '/man/,/mail/ r a.txt' passwd

测试开发进阶(四十一)

匹配内容写入文件

  1. $ sed -i '/man/,/mail/ w b.txt' passwd

测试开发进阶(四十一)

删除内容

  1. $ sed -i '/test/ d' passwd

修改

  1. $ sed '3,6 s/nologin/666/' passwd |head

测试开发进阶(四十一)