引号

在shell中的引号有下面几个种类:

  • 单引号
  • 双引号
  • 倒引号

在使用特殊符号表达的时候,会正常输出显示符号吗?

$ echo *

这个命令真的可以输出*这个符号吗,不能,*为特殊字符,在命令中不会被正确执行,需要用\*转化为普通字符后,就可以执行了。

$ echo \*

但是应该字符串带有很多标点符号等其他特殊字符时,需要在每一个特殊符号字符前添加\,输入效率低,并且不利于阅读。所以引号就有效的解决了这个问题。

单引号

$ echo 'hi,this is my firend.'

被单引号括起来的字符都是普通字符,会被全部显示出来。

但是又因为使用某一些个别特殊的字符的时候,会无法工作,如:$来引用变量:

$ echo '现在的目录为<$HOME>,用户目录为<$USER>'

这个命令将不能工作,但是使用\会让可读性变差。所以又可以使用另一个引号。

双引号

由双引号括起来的字符(除了$、倒引号和\外)均为普通字符。

$ name=user
$ echo "现在是北京时间:`date`,欢迎用户$name"

上面的命令就是使用了倒引号和一些变量来输出的字符。

倒引号

被倒引号括起来的字符为shell解释为命令行,shell会执行里面的命令,再以标准输出结果取代整个倒引号的部分,倒引号在Tab的上方。

$ today=`date`
$ echo 时间是$today