zoukankan      html  css  js  c++  java
  • 变量替换

    设置变量为只读

    先对一个变量赋值,再对变量readonly ,任何用户不能对只读变量进行重新赋值

    a=ccc

    readonly a

    对变量的路径进行操作,先判断路径是不是非空

    1、判断一个变量是否定义

    zzx@ubuntu:~$ echo $test               #test没定义      

    zzx@ubuntu:~$ result=${test:-UNSET}
    zzx@ubuntu:~$ echo $result           #$result返回UNSET  UNSET可以自己定义为其他字符
    UNSET               
    zzx@ubuntu:~$ echo $test    # test还是没定义   结果为空

                                                 #空行

     

    第二行   :    CRON_VALIDATE_MAILRCPTS不为空    &&    就吧$t赋值给 CRON_VALIDATE_MAILRCPTS

    ~~~~~~~~~~~~~~~

    zzx@ubuntu:~$ test="nihao"   #定义test
    zzx@ubuntu:~$ result=${test:-UNSET} 
    zzx@ubuntu:~$ echo $result   
    nihao
    zzx@ubuntu:~$ echo $test
    nihao

    2、

    zzx@ubuntu:~$ unset test
    zzx@ubuntu:~$ echo $test

    zzx@ubuntu:~$ result=${test:=UNSET}
    zzx@ubuntu:~$ echo $result
    UNSET
    zzx@ubuntu:~$ echo $test    #test原本没定义现在被定义为UNSET
    UNSET

     3、 ?捕捉变量是否定义


    zzx@ubuntu:~$ value=1
    zzx@ubuntu:~$ echo ${value:?"sorry,value not definde"}
    1
    zzx@ubuntu:~$ unset value
    zzx@ubuntu:~$ echo ${value:?"sorry,value not definde"}
    -bash: value: sorry,value not definde

    4、 + 测试变量是否存在

    zzx@ubuntu:~$ r=${value:+1}
    zzx@ubuntu:~$ echo $r

    zzx@ubuntu:~$ value="hello world"
    zzx@ubuntu:~$ echo $r

    zzx@ubuntu:~$ r=${value:+1}
    zzx@ubuntu:~$ echo $r
    1

    5 -    变量没定义就用-号后面的代替,去掉冒号    ${value-world}

         防止path1没定义 把根删了    没定义就用/tmp赋值给path1

    #path存在就用path    path不存在就用 path:=/tmp  

    (5) ${value:offset} 

           ${value:offset:length} 从变量中提取子串,这里offset和length可以是算术表达式. 

    (6) ${#value} 

           变量的字符个数 

    zzx@sdcm152:~$ a=nihao
    zzx@sdcm152:~$ echo ${#a}
    5
    zzx@sdcm152:~$ a="nihao"
    zzx@sdcm152:~$ echo ${#a}
    5

    zzx@sdcm152:~$ a="hel,lo"
    zzx@sdcm152:~$ echo ${#a}
    6

    zzx@sdcm152:~$ a="hel,l@"
    zzx@sdcm152:~$ echo ${#a}
    6

    zzx@sdcm152:~$ echo ${a#he}
    l,l@

    zzx@sdcm152:~$ echo ${a/@/o}
    hel,lo

    (7) ${value#pattern} 

           ${value##pattern} 
           去掉value中与pattern相匹配的部分,条件是value的开头与pattern相匹配 
           #与##的区别在于一个是最短匹配模式,一个是最长匹配模式. 

    (8) ${value%pattern} 

           ${value%%pattern} 
           于(7)类似,只是是从value的尾部于pattern相匹配,%与%%的区别与#与##一样 

    (9) ${value/pattern/string} 

           ${value//pattern/string} 
           进行变量内容的替换,把与pattern匹配的部分替换为string的内容,/与//的区别与上同 

    注意: 上述条件变量替换中,除(2)外,其余均不影响变量本身的值 

  • 相关阅读:
    多任务处理:控制默认行为
    多任务处理:管理调度Executor 接口
    多任务处理:服务器协议
    自己来做服务级的木马后门
    IBM ThinkPad
    韩国地名词汇/ 한국지명어휘(注册跑跑韩服有用)1
    EXE程序的自删除实现
    IBM ThinkPad
    EXE程序的自删除实现
    用VBScript实现对Windows注册表的修改
  • 原文地址:https://www.cnblogs.com/hanxing/p/4005806.html
Copyright © 2011-2022 走看看