转至:http://goward.jimdo.com/2010/06/15/linux-shell%E5%90%84%E7%A7%8D%E5%BC%95%E5%8F%B7%E7%9A%84%E7%94%A8%E6%B3%95/
这些字符之间的区别在于它们如何影响变量(如$NAME)和Shell命令(如date)。对于任何一对引号,shell都会把引号内的内容发送给命令。在下面的实例中使用echo命令。详细地讲,它们的区别如下:
单引号(single quote) Shell不会处理任何变量或命令
双引号(double quote)Shell会处理变量,如$NAME,但不会处理任何命令。
反引号(back quote)Shell尝试把引号中的每个单词作为命令处理。如果有变量,首先会对它们进行求值,然后将其作为命令处理。因此,如果$NAME在反引号中就会处理它,然后把结果作为命令处理。
可以在以下命令中查看它是如何工作的。假定NAME=Jame。记住date是一个命令,返回当前日期和时间。第一个命令没有引号。shell会解释$NAME变量,但不会运行date命令。
$echo Welcome $NAME,the date is date
Welcome Jame,the date is date
下一个命令用单引号封闭输入。这将阻止shell解释如何变量或命令。
$echo 'Welcome $NAME,the date is date'
Welcome $NAME,the date is date
以下命令用双引号封闭输入。结果类似于不带引号的输出。
$echo "Welcome $NAME,the date is date"
Welcome Jame,the date is date
最后一个命令包含用于命令的反引号。shell会解释该命令。
$echo "Welcome $NAME,the date is `date`"
Welcome Jame,the date is Tus June 15 10:43:37 EST 2010