• Shell 变量替换及测试


    声明:$ 后面跟linux可执行命令

    一、变量替换

                      语法                      说明
    ${变量名#匹配规则} 从变量的开头进行规则匹配,将符合最短的数据删除
    ${变量名##匹配规则} 从变量的开头进行规则匹配,将符合最长的数据删除
    ${变量名%匹配规则} 从变量的尾部进行规则匹配,将符合最短的数据删除
    ${变量名%%匹配规则} 从变量的尾部进行规则匹配,将符合最长的数据删除
    ${变量名/旧字符串/新字符串} 变量内容包含旧字符串,则第一个旧字符串被新字符串取代
    ${变量名//旧字符串/新字符串} 变量内容包含旧字符串,则全部的旧字符串被新字符串取代

    例1 :

    定义变量:$ var_1="I love you, Do you love me"

    输出变量:$ echo $var_1

    打印结果:I love you, Do you love me

    测试1:从头匹配最短删除

      $ var_11=${var_1#*ove}     // * 表示匹配任意字符

      $ echo $var_11

      打印结果:you, Do you love me    // 注意开头的空格被去掉了。

    测试2: 从头匹配最长删除(贪婪模式)

      $ var_12=${var_1##*ove}     // * 表示匹配任意字符

      $ echo $var_12

      打印结果:me   // 注意开头的空格被去掉了。

    测试3: 从后匹配最短删除

      $ var_13=${var_1%ov*} 

      $ echo $var_13

      打印结果:I love you, Do you l

    测试4: 从后匹配最长删除(贪婪模式)

      $ var_14=${var_1%%ov*}

      $ echo $var_14

      打印结果:I l   // 大写的 i 和 小写的 L

    测试5: 替换第一个旧字符串

      $ var_15=${var_1/love/LOVE}

      $ echo $var_15

      打印结果:I LOVE you, Do you love me

    测试6: 替换全部的旧字符串

      $ var_16=${var_1//love/LOVE}

      $ echo $var_16

      打印结果:I LOVE you, Do you LOVE me

    二、变量测试  

    变量测试不常用,实际编程中 if else 就可以取代变量测试。上面的 str没有配置 == str没有定义。expr是字符串,并不是变量。

    举个例子

    对于 var=${str-expr} :如果 str 没有配置,则 var=expr; 如果 str="",则 var=""; 如果 str 定义了且不为空,则 var=$str

      第一种情况:  

               

      第二种情况:

         

      第三种情况:

         

    忽有所思:有疑惑的地方还是需要去测试、去验证,否则这个问题在心里永远是一个谜。

  • 相关阅读:
    python学习第19天
    python学习第18天
    python 端口扫描
    Linux pthread
    python tornado 入门
    C语言 链表排序
    软件版本中的 符号意思
    connect 链接失败: 查找不到 signal
    类模板 与 模板类
    Qt:正则表达式语法:
  • 原文地址:https://www.cnblogs.com/shenqidu/p/10560648.html
Copyright © 2020-2023  润新知