Linux - 引用
双引号
如果把文本放在双引号中,那么 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`