Linux egrep及bash的变量

egrep及扩展的正则表达式
  egrep = grep -E;
  扩展正则表达式的元字符:
   字符匹配
    “.”、[ ]、[^];
   匹配次数
    ""、+、?、{m}、{m,n};
   位置锚定
    ^、$、\<、\>、\b;
   分组
    ( );
    支持后向引用;
   或者:|
    例子:a|Cat;
  fgrep:不支持正则表达式搜索,严格匹配给定的字符;
bash
  bash中变量的种类
   本地变量:生效范围为当前shell,不包括其父shell和子shell
   环境变量:生效范围为当前shell及其子shell;
   局部变量:生效范围为当前shell一段代码片段中(通常指一段函数之内);
   特殊变量:$?,$0,$*,$@,$#;
   位置变量:根据位置对应关系,将命令行中的参数依次赋值给脚本中的位置变量:$1,$2,… ;
    本地变量
     变量赋值:name=‘value’;
      value:
       可以使用直接赋值; name=‘string’
       可以引用现有的变量;name=‘$PATH’
       可以引用命令;name=`command` 或 name=$(command);
    变量引用:
     " ":弱引用,其中的变量引用会被替换为相对应的值;
     ’ ':强引用,其中的变量引用不会被替换为对应的值,而是保持原来的字符内容;
    显示已定义的变量:
     set;
    撤销变量:
     unset name;
   环境变量:本地变量可以被导出为环境变量;
    变量声明,赋值:
     export name=value;
     declare -x name=value;
    变量引用:同本地变量;
     显示所有环境变量
     env、export、printenv;
    销毁变量:
     unset name;
   位置变量
    在脚本代码中调用通过命令行传递给脚本的参数;
    $1,$2,…:对应调用第1、第2、…个参数;
    0    0:调用脚本名字本身;     
:调用命令行中的所有参数,并且当做一个参数来使用(不精确,但意思类似);
    KaTeX parse error: Expected 'EOF', got '#' at position 32: …每个参数单独调用;     $#̲:传递给脚本的参数个数;   …RANDOM;
    增强型赋值:
     +=,-+,++,–,/=,%=,==;
     自增、自减:
      let var++ → let var+=;
      let var-- → let var-=;
    条件测试
     判断某需求是否满足,需要由测试机制来实现;
     Note:专用的测试表达式需要由测试命令辅助完成测试过程;
     测试命令
      test expression;
      [ expression ];
      [[ expression ]];
       Note:方括号于表达式中间必须存在一个空白字符;
     bash的测试类型
      数值测试
       -gt:是否大于;
       -lt:是否小于;
       -ne:是否不等于;
       -ge:是否大于等于;
       -te:是否小于等于;
       -eq:是否等于;
      字符测试
       >:是否大于;字符的大小是根据ASCII来比较的;
       <:是否小于;
       ==:是否等于;
       !=:是否不等于;
       =~:左侧的字符串是否能被右侧的PATTERN所匹配;
        Note:使用~=时,需要使用[[ expression ]];
       -z:是否为空;
       -n:是否为非空;
       Note:用于字符串比较的时候,应该使用引号把字符串括起来;
      bash条件测试(文件测试)
       测试方式
        test EXPRESSION

[ EXPRESSION] [[ EXPRESSION ]]

测试表达式的类别
        数值比较
        字符串测试
        文件测试:获取帮助:man bash;
         -a FILE:文件是否存在;
         -e FILE:文件是否存在;
         -d FILE:文件是否存在且为目录;
         -f FILE:文件是否存在且为普通文件;
         -r FILE:文件是否存在当前使用者对此文件是否具有可读权限;
         -w FILE:文件是否存在当前使用者对此文件是否具有可写权限;
         -x FILE:文件是否存在且当前使用者对此文件是否具有可执行文件;
         -g FILE:文件是否存在且具有sgid权限;
         -u FILE:文件是否存在且具有suid权限;
         -s FILE:文件是否存在且非空;
         -t fd:fd表示文件描述符打开,且与某终端相关;
          一般情况下,主机启动时自己启动的文件与终端无关,自己手动启动的与终端有关;
         双目测试:通常用于比较两个配置文件的新旧;
          FILE1 -ef FILE2:FILE1与FILE2是否为同一个文件;
          FILE1 -nt FILE2:FILE1是否比FILE2更新;
          FILE1 -ot FILE2:FILE1是否比FILE2更旧;
        组合条件测试:
         逻辑运算:
          第一种方式
           COMMAND || COMMAND
           COMMAND && COMMAND
           !COMMAND
            [ -e FILE ] || [ -r FILE ]
          第二种方式
            COMMAND -o COMMAND
            COMMAND -a COMMAND
            ! COMMAND
            必须使用测试命令进行;
            [ -e FILE -o -r FILE ]
           取非的时候可能用到:
            摩根定理:
             !(P && Q) = (!P) || (!Q)
              在这里插入图片描述
             !(P ||Q) = (!P) && (!Q)
              在这里插入图片描述
   bash自定义退出状态码:
     exit [n];
      脚本中一旦执行到exit,就会直接退出脚本,且退出状态码为[n];
      如果没有设置exit,则以脚本最后一条命令的状态码为脚本最后的退出状态码;

注:根据马哥视频做的学习笔记,如有错误,欢迎指正;侵删

原文地址:https://www.cnblogs.com/guowei-Linux/p/9787342.html