引用文字文字
本段中的所有示例都打印出该行
!"#$&'()*;<=>? @[\]^`{|}~
反斜杠引用下一个字符,即按字面解释下一个字符。一个例外是换行符:反斜杠换行符扩展为空字符串。
echo \!\"\#\$\&\'\(\)\*\;\<\=\>\?\ \ \@\[\\\]\^\`\{\|\}\~
单引号(正向引号'
,也称为撇号)之间的所有文本都按字面打印。即使反斜杠代表自己,也不可能包含单引号; 相反,你可以停止文字字符串,包含带反斜杠的文字单引号,然后再次启动文字字符串。因此,4 字符序列'\''
有效地允许在文字字符串中包括单引号。
echo '!"#$&'\''()*;<=>? @[\]^`{|}~'
# ^^^^
Dollar-single-quote 像许多其他编程语言一样启动字符串文字 $'…'
,其中反斜杠引用下一个字符。
echo $'!"#$&\'()*;<=>? @[\\]^`{|}~'
# ^^ ^^
双引号 "
分隔半文字字符串,其中只有字符 "
\
$
和`
保留其特殊含义。这些字符需要在它们之前使用反斜杠(请注意,如果反斜杠后跟其他字符,则反斜杠仍然存在)。当包含变量或命令替换时,双引号最有用。
echo "!\"#\$&'()*;<=>? @[\\]^\`{|}~"
# ^^ ^^ ^^
echo "!\"#\$&'()*;<=>? @[\]^\`{|}~"
# ^^ ^ ^^ \[ prints \[
交互式地,请注意 !
触发双引号内的历史扩展:!oops
查找包含 oops
的旧命令; \!oops
不做历史扩张但保持反斜杠。这不会发生在脚本中。