前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >测试开发进阶(四十一)

测试开发进阶(四十一)

作者头像
zx钟
发布2019-12-05 23:44:21
4810
发布2019-12-05 23:44:21
举报
文章被收录于专栏:测试游记测试游记

校验Shell格式

https://www.shellcheck.net/

流程控制

while

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

代码语言:javascript
复制
while 条件do    执行语句done
代码语言:javascript
复制
#!/bin/bash#Author:zhongxina=1while [ ${a} -lt 5 ]do     echo ${a}    a=$((${a}+1))done

case

代码语言:javascript
复制
case 变量名 in    值1)        指令1    值2)        指令2    值3)        指令3    *)        # 条件都不满足        指令4esac
代码语言:javascript
复制
#!/bin/bash#Author:zhongxincase "$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不支持正则,按字符串字面意思进行匹配

最基础用法

代码语言:javascript
复制
$ grep mail passwd

大小写不敏感

代码语言:javascript
复制
$ grep New passwd$ grep New passwd -i

匹配有多少行符合要求

代码语言:javascript
复制
$ grep New passwd -i -c1

显示匹配的内容的行号

代码语言:javascript
复制
$ grep New passwd -i -n

查找路径下的内容

代码语言:javascript
复制
$ grep -r "bash" ./

只输出文件名

代码语言:javascript
复制
$ grep -rl "bash" ./

正则匹配

代码语言:javascript
复制
$ grep "s{2}" passwd -E

匹配整个单词

代码语言:javascript
复制
$ grep "oo" passwd -w$ grep "root" passwd -w
实例

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

代码语言:javascript
复制
$ grep "$USER" passwd  > /dev/null && echo "$USER是存在的"|| echo "$USER是不存在的"

查看是否运行了docker

-v:排除

代码语言:javascript
复制
# 查看ps中包含docker的内容$ ps -aux | grep dockerroot     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 -l0

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

匹配的行打印两次

原始行+匹配的行

代码语言:javascript
复制
$ sed "p" passwd

只打印匹配的行

代码语言:javascript
复制
$ sed -n "p" passwd

匹配 mail的那行

代码语言:javascript
复制
$ sed "/mail/ p" passwd -n

匹配以s开头的内容

代码语言:javascript
复制
$ sed -n "/^s/ p" passwd

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

代码语言:javascript
复制
$ sed -n "/^mail/,/^s/ p" passwd

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

代码语言:javascript
复制
$ sed '3,5 i Add content before the current line' passwd

正式写入需要加 -i

代码语言:javascript
复制
$ sed -i '3,5 i Add content before the current line' passwd

插入文件的内容

代码语言:javascript
复制
$ echo "testfile" >> a.txt$ sed -i '/man/,/mail/ r a.txt' passwd

匹配内容写入文件

代码语言:javascript
复制
$ sed -i '/man/,/mail/ w b.txt' passwd

删除内容

代码语言:javascript
复制
$ sed -i '/test/ d' passwd

修改

代码语言:javascript
复制
$ sed '3,6 s/nologin/666/' passwd |head
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试游记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 校验Shell格式
  • 流程控制
    • while
      • case
      • 文本处理三剑客
        • grep
          • 实例
        • sed
        相关产品与服务
        容器服务
        腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档