如果表達(dá)式中包含特殊字符诈悍,shell將會(huì)進(jìn)行替換泛豪。例如靠欢,前面學(xué)習(xí)過的變量的使用(在雙引號(hào)中使用變量)就是一種替換英岭,轉(zhuǎn)義字符也是一種替換
a=10
echo -e "value of a is a \n"
發(fā)現(xiàn)在mac系統(tǒng)下加不加-e在雙引號(hào)中都會(huì)對(duì)變量進(jìn)行轉(zhuǎn)義替換
命令替換
命令替換的語法是 Command
注意是反引號(hào)放妈,不是單引號(hào)北救,這個(gè)鍵位于Esc鍵下方
命令替換是指shell可以先執(zhí)行命令,將輸出結(jié)果暫時(shí)保存芜抒,在適當(dāng)?shù)牡胤捷敵觥?/p>
DATE=`date`
echo "Date is $DATE"
USERS=`who|wc -l`
echo "logged in user are$USERS"
UP=`date;uptime`
echo "Uptime is $UP"
形式 | 說明 |
---|---|
${var} | 變量本來的值 |
${var:+word} | 如果變量var被定義珍策,那么返回word,但不改變var的值 |
${var:-word} | 如果變量var為空或者已被刪除(unset)宅倒,那么返回word攘宙,但不改變var的值 |
${var:=word} | 如果變量var為空或者已被刪除(unset),那么返回word拐迁,并將var的值設(shè)置為word |
${var:?message} | 如果變量 var 為空或已被刪除(unset)蹭劈,那么將消息 message 送到標(biāo)準(zhǔn)錯(cuò)誤輸出,可以用來檢測變量 var 是否可 以被正常賦值线召。若此替換出現(xiàn)在Shell腳本中铺韧,那么腳本將停止運(yùn)行。 |
echo ${var:-"variable is not set"}
echo "1 - value of var is ${var}"
echo ${var:="variable is not setting"}
echo "2 - value of var is ${var}"
unset var
echo ${var:+"this is default value"}
echo "3 - value of var is ${var}"
var="prefix"
echo ${var:+"this is a default value"}
echo "4 - value of var is ${var}"
echo ${var:?"print this message"}
echo "5 - value of var is ${var}"