zoukankan      html  css  js  c++  java
  • Linux高级变量

    高级变量
    基本形式
       [1].变量扩展  格式  ${变量名称}
       [2].命令扩展  格式  $(命令)
       [3].算术扩展  格式  $((算术式))
    1.变量扩展
       基本形式:${变量名称}
       变量扩展含义:一种简易的条件判断,对不同的条件赋予变量不同的值替换.它和变量存在与否的关系很大.
      1.1 测试变量是否存在的基本用法
          语法: ${待测变量-默认值}
          说明:若待测变量不存在则符合判断条件,以传回默认值作为处置.
          解析:若待测变量不存在则返回默认值,否则返回变量的值
          实例:
               unset a
               echo ${a-'默认'}  #输出为'默认'
       1.2 测试变量不存在或其值为空时传回一个默认值
          语法:${待测变量:-默认值}
          实例:
               a=
               echo ${a:-'默认'} #输出为'默认'
        1.3 测试变量不存在或其值为空给变量赋予一个默认值
          语法:${待测变量:=默认值}
          实例:
               a=
               echo ${a:='默认'}
               echo $a #输出为2行'默认'
        1.4 测试变量不存在或其值为空,输出一个提示信息
          语法:${待测变量:?提示信息}
          实例:
               a=
               echo r={a:?提示信息} #输出"提示信息"
        1.5 测试变量存在且为非空则返回真值
     
          语法:${待测变量:+真值}
          实例:
              a=hello
              echo ${a:+world} #输出为"world"
        总结:
            符号     作用
             :       判断变量是否为空,若为空则为真
             +       正向,判断变量是否存在且不为空,若存在且不为空则为真
             -       反向,判断变量是否不存在,若不存在则为空
             =       赋值,
             ?       提示信息
    2.取字符串切片,获得字符串长度
       2.1 取字符串切片
           语法:
              [1].${变量:开始的位置索引}
                   作用:截取从指定的位置开始到字符串结束的所有字符,开始字符的索引为0
     
                   实例:
                   
                        str="hello world"
                        echo ${str:6} #输出结果为"world"
      
              [2].${变量:起始位置:长度}
                   作用:截取从指定的起始位置开始的指定长度的字符串。
     
                   实例:
                        str="hello world"
                        echo ${str:6:2} #输出为"wo"
        2.2 计算字符串长度
            语法:${#变量名称}
            实例:
                 str="hello world"
                 echo ${#str} #输出结果为11
    3.对比样式
        目的:截取变量值(字符串)的某一个部分
        做法:将符合样式的部分字符串删除或替换
        3.1 由字符串前面开始对比删除最短的相符者
                 语法:${待测变量#样式}
                 说明:从待测变量的值的左边开始对比,删除最短符合样式的字符串
                 实例:
     
                     filename="/usr/sbin/ntpdate"
                     echo ${filename#}  #显示结果ntpdate
        3.3 由字符串后面开始对比删除最短的相符者
                 语法:${待测变量%样式}
                 实例:
                   filename="/usr/sbin/ntpdate"
                   echo ${filename%/*} #输出结果/usr/sbin
        3.4 由字符串后面开始对比删除最长的相符者
                 语法:${待测变量%%样式}
                 实例:
                   filename="hello/usr/sbin/ntpdate"
                   echo ${filename%%/*} #输出结果hello
      
    4.替换或删除部分字符串
     
       4.1 只替换找到的第一个字符串
            语法:${待测变量/样式/替换}
            实例:
                 str="hello hello"
                 echo ${str/hello/world}  #结果为world hello
       4.2 替换找到的所有样式字符串
            语法:${待测变量//样式/替换}
            实例:
                 str="hello hello"
                 echo ${str/hello/world}  #结果为world world
       4.3 删除第一个指定的字符串
            语法:${待测变量/要删除的字符串/}
            实例:
                 str="hello hello"
                 echo ${str/hello/}  #结果为hello
        4.4 删除所有指定的字符串
            语法:${待测变量//要删除的变量/}
            实例:
                 str="hello world hello"
                 echo ${str//hello/} #输出结果为world
    5.命令扩展
        语法:$(命令)
        实例: time=$(date) 等价 time=`date`
    6.算术扩展
        语法:$((算术))
        实例:
             echo "a=$((5*5))" #结果为a=25

  • 相关阅读:
    学习工具
    Qt 之 QApplication
    Qt中常用的类
    关于在Qt里让程序休眠一段时间的方法总结
    Qt setWindow setViewPort
    ajax回调数据 Structs has detected an unhandled exception 问题
    Struts2配置拦截器自定义栈时抛异常:Unable to load configuration.
    es6之map解构数组去重
    ES6之对象的方法
    ES6之genorator和yield使用(迭代器)
  • 原文地址:https://www.cnblogs.com/blueskycc/p/4347837.html
Copyright © 2011-2022 走看看