回忆

  • $ ${}

    用于引用变量

    image-20220916190955011

  • [] test

    判断某个表达式的返回值是0或非0

    image-20220916191412467

    image-20220916191453668

    注意"[“后和”]“前都需要有空格,并且”="两边也都要有空格

  • $() ``

    用于命令替换,会将里面的内容执行,然后返回值结果返回

    image-20220916200739675

    image-20220916200808839

  • $[] $(())

    用于数学计算

    image-20220916201029568

函数

  • 系统函数

    • basename [string/pathname] [suffix]

      切割文件名

      image-20220916202243175

    • dirname path

      切割路径

      image-20220916202354433

    image-20220916203510854

    image-20220916203526896

  • 自定义函数

    • 基本语法
      [ function ] funname[()]
      {
          Action;
          [return int;]
      }
    • 示例代码

      #!/bin/bash
      function add(){
          sum=$[ $1 + $2  ]
          echo "sum : $sum"
          return $sum #返回值只能是[0-255]
      }
      
      read -p "请输入第一个整数:" -n 10 a
      read -p "请输入第二个整数:" -n 10 b
      
      add a b

      image-20220916204859487

正则

  • 常用特殊字符

    • ^ 匹配一行的开头

      image-20220917104348151

    • $匹配一行的结尾

      image-20220917104545280

    • . 表示任意一个字符

      image-20220917104649397

      image-20220917104704780

    • * 表示上一个字符出现0次或多次

      + 1次或多次

      ? 0次或1次

      image-20220917104815409

      .* 表示任意字符串

      image-20220917104938588

    • [] 表示某个范围内的一个字符

      举例
      • [6,8] 匹配6或8
      • [0-9] 匹配0-9的数字
      • [0-9]* 匹配任意长度的数字字符串
      • [a-z] 匹配a-z之间的字符
      • [a-z]* 匹配任意长度的字母字符串
      • [a-z,0-9] 匹配0-9的数字或者a-z之间的字符

      image-20220917105442238

    • \ 转义字符

    • {m,n} 表示上一个字符出现m次到n次

      grep不支持直接这种 写法,需要添加一个选项-E

      image-20220917110354913

文本处理工具

  • cut [option] [filename] 剪切数据

    选项参数 功能
    -f 列号,提取第几列
    -d 分隔符 默认分隔符是\t
    -c 以字符为单位进行分割
  • awk [option] '/pattern/{action}' filename 文本分析工具

    选项参数 功能
    -F 输入指定文件分隔符
    -v 赋值一个用户定义变量

    image-20220917113508916

    image-20220917113636263

    image-20220917144612882

    使用-v选项

    不需要添加$

    image-20220917145114506

    awk内置变量

    变量 说明
    FILENAME 文件名
    NR 已读文件行数
    NF 切割的列数

    image-20220917145654739