linux变量默认值,shell 变量默认值

一、环境

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 <

}

int main(int argc, char *args[])

{

func();

func(10);

func(10, 99.9);

func(20, 33.3, 9.3f);

return 0;

}

#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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值