1) #引用变量值# # reminder='Time to go to the dentist!'
# echo $reminder
Time to go to the dentist!
# echo _${reminder}_ #使用{}可以保护变量,避免额外的字符影响变量。
_Time to go to the dentist!_
警告: 默认,未定义的变量展开为null(空字符串)。程序随便乱写,就可能会导致灾难发生:
# rm -fr /$MYPROGRAM 如未设置MYPROGRAM,就会有大灾难发生了!
所以,写程序要非常小心。2) #替换运算符# 测试字符串变量存在状态,且某种情况下允许默认值替换。
${varname:-word} 如果varname存在且非null,则返回其值;否则,返回word # echo ${var:-hello,world} var为不为空,返回其值;否则,返回hello,world 如果变量未定义,则返回默认值
${varname:=word} 如果varname存在且非null,则返回它的值;否则,设置它为word,并返回其值 # echo ${var:-hello,world} ;如果var有值,返回其值;否则,返回hello,world,并赋值给var 如果变量未定义,则设置变量为默认值
${varname:?message} 如果varname存在且非null,则返回它的值;否则,显示varname:message,并退出当前的命令或脚本。省略message,会出现默认信息parameter null or not set。 ${count:?"undefined/1"}将显示 count:undefined!,如果count未定义,则退出 为了捕捉由于变量未定义所导致的错误。
${varname:+word} 如果varname存在且非null,则返回word;否则,返回null。 如果count已定义,则${count:+1}返回1(也就是“真”) 为测试变量存在