首页 百科知识 特殊字符的引用

特殊字符的引用

时间:2024-10-09 百科知识 版权反馈
【摘要】:在Linux系统中,有些字符对shell有特殊含义,但有时用户不需要使用这些字符的特殊含义,因此就要消除其特殊含义。消除特殊字符特殊含义的机制称为引用或转义。反引号括起来的字符串被shell解释为命令,在执行时,shell首先执行该命令行,并以它的标准输出结果取代整个反引号部分,例如:There are follow files in this folder: test1.sh test2.sh反斜杠消除单个字符的特殊含义,即将紧跟其后的单个字符按字符本来的实际含义来解释,例如,要将字符串“$test”赋给变量var,则应使用

10.3.6 特殊字符的引用

在Linux系统中,有些字符对shell有特殊含义,但有时用户不需要使用这些字符的特殊含义,因此就要消除其特殊含义。消除特殊字符特殊含义的机制称为引用或转义。

(1)双引号

使用双引号可以消除大多数字符的特殊含义,但不能消除$(美元符号)、`(反引号)和\(反斜杠)的特殊含义。如果字符串中包含空白字符,如空格、制表符等,最好使用双引号将字符串括起来,以保留字符串中的空白符,例如,下面的例子说明使用双引号可以消除特殊字符的特殊含义:

$ echo 〉

bash: syntax error near unexpected token 'new line'

之所以出现错误,是因为Shell将该命令解释为:将echo命令的输出重定向到一个文件,由于命令行上没有文件名,所以显示错误信息。使用双引号将参数括起来则可以解决上述问题。

$ echo "〉"

当字符串中使用空白符时,最好使用双引号,以免出现错误,例如,下例使用grep查找字符串“Davey Wire”,因为没有加双引号,grep将“Davey”认作字符串,而把“Wire”当作文件名。

$grep Davey Wire /etc/passwd

grep: Wire : No such file or directory

要解决这个问题,可将字符串用双引号括起来,如下所示:

$grep "Davey Wire" /etc/passwd

下面的例子说明双引号不能消除$的特殊含义:

$child=boy

$ echo "The $child did well"

The boy did well

(2)单引号

单引号的工作方式与双引号相似,但是单引号可以消除所有字符的特殊含义,例如:

$child=boy

$ echo ' The $child did well '

The $child did well

从上例中可以看出,$保持了其本身的含义,作为普通字符出现。

(3)反引号

反引号(`)这个字符所对应的键一般位于键盘的左上角,不要将其同单引号(')混淆。反引号括起来的字符串被shell解释为命令,在执行时,shell首先执行该命令行,并以它的标准输出结果取代整个反引号(包括两个反引号)部分,例如:

$ ls

test1.sh test2.sh

$ st="There are follow files in this folder: `ls`"

$ echo $st

There are follow files in this folder: test1.sh test2.sh

(4)反斜杠

反斜杠消除单个字符的特殊含义,即将紧跟其后的单个字符按字符本来的实际含义来解释,例如,要将字符串“$test”赋给变量var,则应使用

$var=\$test

若要删除当前目录下的文件temp?,则应使用命令:

$rm temp\?

若是用命令“rm temp?”将会删除当前目录下所有文件名由temp后跟单个字符组成的文件。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈