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        


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






相关内容

热门资讯

走访茉莉花都横州:大片花田浸泡... 受今年第10号台风“美莎克”持续影响,广西南宁横州市遭遇极端强降雨,境内多座水库出现漫顶及缺口情况、...
这场震惊世人的中国在德留学生性... “大多数人读起这个事情,他们会觉得这些人(加害者)一定是很可怕的人吧?但是其实不是,他们在生活中是非...
美国人,真的“不懂球”吗? 美国人为什么不喜欢足球?刘骁骞带着这个问题走进美墨边境、锈带水牛城和洛杉矶的球场。他发现足球在美国的...
特朗普:将向乌克兰授予制造爱国... 7月8日,在北约峰会记者会上,特朗普暗示欧洲和乌克兰可能获得“爱国者”导弹生产许可证。特朗普被问及,...
世界杯,玩脏的 作者 | 凌川儿 编辑 | 阿树FIFAmerica,一个由FIFA(国际足联)和America(美...
视频丨转移群众 抢修道路 广西... 近期广西多地遭遇极端天气,造成灾情,多方争分夺秒,持续抢险救灾。广西横州:水库严重险情后紧急抢修受灾...
乌军声称击落一架俄苏-35战斗... 当地时间8日,乌克兰武装部队空军表示,当天在东部方向击落了一架俄罗斯苏-35多用途战斗机。俄罗斯方面...
海信变频空调kfr-26w27... 可能是因为控制面板故障,需要拆开控制面板请专业人员修理或更换控制面板来解决;可能是因为电源接触不良,...
空调p1是什么故障码 1、空调显示p1的意思是空调的供电电压可能太高了或者是太低了,这种情况下空调自然就会出现p1故障。2...
空调显示h1代码怎么办-空调故... 众所周知,在目前生活中空调的应用是十分普及的,但是由于长时间的使用,空调也难免会出现一些故障,当空调...