shell 变量默认值
admin
2023-08-01 02:00:11
0次

一、环境

    ubuntu14.04 x86_64

   

二、变量默认值

    2.1     ${vari:-defaultValue}

    当var没有定义时,此时使用defaultValue, 而vari依然为空,没有改变值

     eg:
      在终端上操作

  #echo ${name}
  #            //因为name没有定义,结果为空
  #echo ${name:-chao ge}
  #chao ge        //没有定义name,使用默认值chao ge
  #echo ${name}
  #           //依然为空,并未改并name变量的值



    2.2    ${vari:=defaultValue}

     当vari没有定义时,此时使用defaultValue, 同时vari也被赋值为defaultValue

      eg:

    在终端上操作

  #echo ${name}
  #            //因为name没有定义,结果为空
  #echo ${name:=chao ge}
  #chao ge        //没有定义name,使用默认值chao ge
  #echo ${name}
  #chaoge         //name变量的值已经被改变

    2.3 ${vari:?value}

         当vari没有定义时,或者定义了值为空,将在终端报错并且退出,用于检查是否定义以及是否为空

        eg.

        >echo ${name}
        >                     //因为没有定义name,所以输出为空
        >echo ${name:?zhangsan}
        >bash: name: zhangsan   //因为没有定义name,报错并退出
        >echo ${name:?}
        >bash: name: 参数为空或未设置
        >name=   //定义name变量,但是值为空
        >echo ${name:?}
        >bash: name: 参数为空或未设置
        >name=lisi    //设置了name的值
        >echo ${name:?}
        >lisi   //正常输出name的值

        

        2.4 ${vari:+value}

          当vari定义并且不为空,将用value替换vari的值,否则什么也不做, 与${vari:-value}相反

         eg:

        >echo ${myhome:+beijing}
        >           //因为没有定义myhome,所以为空
        >myhome=     //定义myhome,但为空
        >echo ${myhome:+beijing}
        >
        >myhome=shanghai     //设置变量的值
        >echo ${myhome:+beijing}
        >beijing    //此时myhome定义了并且不为空,则替换为beijing了


 三、应用

    3.1 Makefile

             eg: linux内核中其中一个Makefile中的     

   #Default value
   head-y        := arch/arm/kernel/head$(MMUEXT).o arch/arm/kernel/init_task.o
    textofs-y    := 0x00008000

    3.2 函数默认参数

        和c++的默认参数异曲同工之妙

        default_parameters.cpp

     #include
     void func(int i=1, double d=2.0, float f=3.0)
      {
         std::cout << i <<", " <

    #g++ default_parameters.cpp

    # ./a.out
    1, 2, 3
    10, 2, 3
    10, 99.9, 3
    20, 33.3, 9.3

    default_parameters.sh

    #!/bin/bash
  
    func()
   {
    echo "${1:-10}, ${2:-10.2}, ${3:-zhangsan}" 
    }
  
   func
   func 23
   func 23 12.0
   func 34 23.0 lisi

    #bash default_parameters.sh

    10, 10.2, zhangsan
    23, 10.2, zhangsan
    23, 12.0, zhangsan
    34, 23.0, lisi        


        这样就可以让函数呈现多态性






相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...