如果表達(dá)式中包含特殊字符,Shell 將會(huì)進(jìn)行替換。例如,在雙引號(hào)中使用變量就是一種替換,轉(zhuǎn)義字符也是一種替換。
舉個(gè)例子:

運(yùn)行結(jié)果:

這里 -e 表示對(duì)轉(zhuǎn)義字符進(jìn)行替換。如果不使用 -e 選項(xiàng),將會(huì)原樣輸出
下面的轉(zhuǎn)義字符都可以用在 echo 中:
轉(zhuǎn)義字符含義
? ? \\反斜杠
? ? \a警報(bào),響鈴
? ? \b退格(刪除鍵)
? ? \f換頁(FF),將當(dāng)前位置移到下頁開頭
? ? \n換行
? ? \r回車
? ? \t水平制表符(tab鍵)
? ? \v垂直制表符
可以使用 echo 命令的 -E 選項(xiàng)禁止轉(zhuǎn)義,默認(rèn)也是不轉(zhuǎn)義的;使用 -n 選項(xiàng)可以禁止插入換行符。
命令替換
命令替換是指Shell可以先執(zhí)行命令,將輸出結(jié)果暫時(shí)保存,在適當(dāng)?shù)牡胤捷敵觥?/p>
命令替換的語法:
`command`
注意是反引號(hào),不是單引號(hào),這個(gè)鍵位于 Esc 鍵下方,Tab鍵的上方。
下面的例子中,將命令執(zhí)行結(jié)果保存在變量中:

運(yùn)行結(jié)果:

變量替換
變量替換可以根據(jù)變量的狀態(tài)(是否為空、是否定義等)來改變它的值
可以使用的變量替換形式:
形式說明
${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ò)誤輸出,可以用來檢測(cè)變量 var 是否可以被正常賦值。
若此替換出現(xiàn)在Shell腳本中,那么腳本將停止運(yùn)行。
${var:+word}如果變量 var 被定義,那么返回 word,但不改變 var 的值。
請(qǐng)看下面的例子:

運(yùn)行結(jié)果:
