shell变量默认值-创新互联
一、环境
成都创新互联专业IDC数据服务器托管提供商,专业提供成都服务器托管,服务器租用,服务器托管,服务器托管,成都多线服务器托管等服务器托管服务。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
#includevoid 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.3default_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这样就可以让函数呈现多态性
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
本文名称:shell变量默认值-创新互联
文章源于:http://myzitong.com/article/dpeipp.html