别人解释的很好,只想举个简单的例子。
单引号可用于文本周围,以防止外壳解释任何特殊字符。用单引号括起来的美元符号、空格、& 符号、星号和其他特殊字符都将被忽略。
$ echo 'All sorts of things are ignored in single quotes, like $ & * ; |.'
它会给出这个:
All sorts of things are ignored in single quotes, like $ & * ; |.
唯一不能放在单引号内的是单引号。
双引号的作用类似于单引号,除了双引号仍然允许 shell 解释美元符号、反引号和反斜杠。众所周知,反斜杠会阻止解释单个特殊字符。如果需要将美元符号用作文本而不是变量,这在双引号中很有用。它还允许对双引号进行转义,因此它们不会被解释为带引号的字符串的结尾。
$ echo "Here's how we can use single ' and double \" quotes within double quotes"
它会给出这个:
Here's how we can use single ' and double " quotes within double quotes
还可以注意到,在双引号中会忽略撇号,否则它会被解释为带引号的字符串的开头。但是,变量会被解释并用双引号内的值替换。
$ echo "The current Oracle SID is $ORACLE_SID"
它会给出这个:
The current Oracle SID is test
后引号完全不同于单引号或双引号。反引号不是用来防止解释特殊字符,而是实际上强制执行它们所包含的命令。执行封闭的命令后,它们的输出将替换原始行中的反引号。举个例子会更清楚。
$ today=`date '+%A, %B %d, %Y'`
$ echo $today
它会给出这个:
Monday, September 28, 2015