双引号
如果把文本放在双引号中,那么 shell 使用的所有特殊字符都将失去它们的特殊含义,而被看成普通字符。字符 "$"(美元符号)、"\"(反斜杠)、"`"(反引号) 除外。这就意味着单词分隔、路径名扩展、波浪线扩展和花括号扩展都将失效,但是参数扩展、算术扩展和命令替换仍然生效。
实例
a) 抑制单词分隔。
[huey@huey-K42JE cmdline]$ touch test file
[huey@huey-K42JE cmdline]$ touch "test file"
[huey@huey-K42JE cmdline]$ ll
total 0
-rw-rw-r-- 1 ucm ucm 0 Oct 3 10:50 file
-rw-rw-r-- 1 ucm ucm 0 Oct 3 10:50 test
-rw-rw-r-- 1 ucm ucm 0 Oct 3 10:50 test file
b) 抑制路径名扩展。
[huey@huey-K42JE cmdline]$ ls D*
Desktop Documents
[huey@huey-K42JE cmdline]$ ls "D*"
ls: cannot access D*: No such file or directory
c) 抑制波浪线扩展。
[huey@huey-K42JE ~]$ echo ~
/home/ucm
[huey@huey-K42JE ~]$ echo "~"
~
d) 抑制花括号扩展。
[ucm@i-5-660-VM cmdline]$ echo {Z..A}
Z Y X W V U T S R Q P O N M L K J I H G F E D C B A
[ucm@i-5-660-VM cmdline]$ echo "{Z..A}"
{Z..A}
单引号
如果希望抑制所有的扩展,那么应该使用单引号。
实例
a) 抑制美元符号 ($) 的扩展。
[huey@huey-K42JE cmdline]$ echo $LANG
en_US.UTF-8
[huey@huey-K42JE cmdline]$ echo "$LANG"
en_US.UTF-8
[huey@huey-K42JE cmdline]$ echo '$LANG'
$LANG
c) 抑制反引号 (`) 的扩展。
[huey@huey-K42JE cmdline]$ echo `cal`
October 2015 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
[huey@huey-K42JE cmdline]$ echo "`cal`"
October 2015
Su Mo Tu We Th Fr Sa
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
[huey@huey-K42JE cmdline]$ echo '`cal`'
`cal`