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`
原文地址:https://www.cnblogs.com/huey/p/4853159.html