引用文字文字
本段中的所有示例都列印出該行
!"#$&'()*;<=>? @[\]^`{|}~
反斜槓引用下一個字元,即按字面解釋下一個字元。一個例外是換行符:反斜槓換行符擴充套件為空字串。
echo \!\"\#\$\&\'\(\)\*\;\<\=\>\?\ \ \@\[\\\]\^\`\{\|\}\~
單引號(正向引號',也稱為撇號)之間的所有文字都按字面列印。即使反斜槓代表自己,也不可能包含單引號; 相反,你可以停止文字字串,包含帶反斜槓的文字單引號,然後再次啟動文字字串。因此,4 字元序列'\''有效地允許在文字字串中包括單引號。
echo '!"#$&'\''()*;<=>? @[\]^`{|}~'
# ^^^^
Dollar-single-quote 像許多其他程式語言一樣啟動字串文字 $'…',其中反斜槓引用下一個字元。
echo $'!"#$&\'()*;<=>? @[\\]^`{|}~'
# ^^ ^^
雙引號 " 分隔半文字字串,其中只有字元 " \ $ 和`保留其特殊含義。這些字元需要在它們之前使用反斜槓(請注意,如果反斜槓後跟其他字元,則反斜槓仍然存在)。當包含變數或命令替換時,雙引號最有用。
echo "!\"#\$&'()*;<=>? @[\\]^\`{|}~"
# ^^ ^^ ^^
echo "!\"#\$&'()*;<=>? @[\]^\`{|}~"
# ^^ ^ ^^ \[ prints \[
互動式地,請注意 ! 觸發雙引號內的歷史擴充套件:!oops 查詢包含 oops 的舊命令; \!oops 不做歷史擴張但保持反斜槓。這不會發生在指令碼中。