引用文字文字

本段中的所有示例都列印出該行

!"#$&'()*;<=>?  @[\]^`{|}~

反斜槓引用下一個字元,即按字面解釋下一個字元。一個例外是換行符:反斜槓換行符擴充套件為空字串。

echo \!\"\#\$\&\'\(\)\*\;\<\=\>\?\ \ \@\[\\\]\^\`\{\|\}\~

單引號(正向引號',也稱為撇號)之間的所有文字都按字面列印。即使反斜槓代表自己,也不可能包含單引號; 相反,你可以停止文字字串,包含帶反斜槓的文字單引號,然後再次啟動文字字串。因此,4 字元序列'\''有效地允許在文字字串中包括單引號。

echo '!"#$&'\''()*;<=>?  @[\]^`{|}~'
#          ^^^^

Dollar-single-quote 像許多其他程式語言一樣啟動字串文字 $'…',其中反斜槓引用下一個字元。

echo $'!"#$&\'()*;<=>?  @[\\]^`{|}~'
#           ^^            ^^

雙引號 " 分隔半文字字串,其中只有字元 " \ $`保留其特殊含義。這些字元需要在它們之前使用反斜槓(請注意,如果反斜槓後跟其他字元,則反斜槓仍然存在)。當包含變數或命令替換時,雙引號最有用。

echo "!\"#\$&'()*;<=>?  @[\\]^\`{|}~"
#      ^^                 ^^  ^^
echo "!\"#\$&'()*;<=>?  @[\]^\`{|}~"
#      ^^                 ^  ^^      \[ prints \[

互動式地,請注意 ! 觸發雙引號內的歷史擴充套件:!oops 查詢包含 oops 的舊命令; \!oops 不做歷史擴張但保持反斜槓。這不會發生在指令碼中。