shell中的引用

By francis_hao    Mar 31,2018

 

引用,用来移除某个字符或单词对于shell的特殊含义

每个元字符对于shell都有特殊含义,可分割单词,如果想使用其本身的含义就需要用到引用,元字符如下

|

&

;

(

)

<

>

space

tab

 

如果满足历史命令扩展的条件而又不想扩展就必须使用引用。命令扩展通常是"!"

 

有三种引用机制,如下

\

转义符,可以使一些有特殊含义的字符保持其本身含义

'

单引号里的内容都保持了其本身的含义,单引号里不能再有单引号

"

双引号里的内容除了几个特例,其余内容都保持其本身含义。特例包括

$

用于变量置换

`

用于命令置换

\

只有在其后跟随$ ` " \<newline>的时候才作为特例,否则就是字符本身

!

只有在符合历史命令扩展的时候才作为特例,否则就是字符本身

 

有一种特殊形式:$'string',用于ANSI C标准的转义序列,string是下面的一种

\a

响铃

\b

退格

\e

溢出(ESC

\E

\f

换页符

\n

换行

\r

回车

\t

制表符

\v

垂直制表符

 

示例

1、特殊形式$'string'的用法,这里是退格字符。

 

2、这里的*不属于双引号引用里的特例,所以不会被扩展,只是以字符本身对待。

所以在下面的脚本中,第二种写法就会导致结果不是预期的了

 

 


本文由 刘英皓 创作,采用 知识共享署名-非商业性使用-相同方式共享3.0中国大陆许可协议 进行许可。欢迎转载,请注明出处:
转载自:http://www.cnblogs.com/yinghao1991/p/8682143.html

 

 

参考

【1】man bash

posted on 2018-03-31 14:42  刘英皓  阅读(951)  评论(0编辑  收藏  举报