一、环境
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变量的值已经被改变
三、应用
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<iostream> void func(int i=1, double d=2.0, float f=3.0) { std::cout << i <<", " <<d <<", " << f << std::endl; } 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
本文出自 “风雪舞者” 博客,请务必保留此出处http://happytree007.blog.51cto.com/6335296/1900383
原文:http://happytree007.blog.51cto.com/6335296/1900383