62、shell转义,单引号与双引号,反撇号

简介: 1、转义     单引号和双引号都能关闭shell对特殊字符的处理。不同的是,双引号没有单引号严格,单引号关闭所有有特殊作用的字符,而双引号只要求shell忽略大多数,具体的说,就是①美元符号②反撇号③反斜杠,这3种特殊字符不被忽略;不忽略美元符号意味着shell在双引号内部也进行变量名替换。

1、转义

    单引号和双引号都能关闭shell对特殊字符的处理。不同的是,双引号没有单引号严格,单引号关闭所有有特殊作用的字符,而双引号只要求shell忽略大多数,具体的说,就是①美元符号②反撇号③反斜杠,这3种特殊字符不被忽略;不忽略美元符号意味着shell在双引号内部也进行变量名替换。

1)单引号

硬转义,单引号内的字符就是其字面意义。阻止shell进行变量替换和解释特殊字符;对于后一种情况,单引号就是个转义字符,类似于反斜线。

2)双引号

会进行变量替换;将整个字符串解释为一个整体,即使参数里面含有空白字符也不会被shell分割开

3)反撇号,相当于$()--命令替换

会把命令执行的输出,替换;相当于函数调用,嵌套的变量会一直解析

shell命令用反引号或者$(...)结构括起来,其中,$(...)格式受到POSIX标准支持,也利于嵌套

反撇号内不能再引用反撇号,而$()中可以引用反撇号

要把$()引用命令与${}引用变量区分开来

4)反斜线

用作转义字符,阻止shell将后续字符解释成特殊字符

2、示例

1)****/home/edwardlewis/altraman # echo 'date'

date

****:/home/edwardlewis/altraman # echo "date"

date

****:/home/edwardlewis/altraman # echo `date`

Fri Aug 19 07:00:02 CST 2011

2)在脚本中:

a)newname=1.log_`date +%Y-%m-%d-%H-%M`

会输出:1.log_2011-10-13-21-27

b)tme=move_data.log_'date +%Y-%m-%d-%H-%M'

echo ${tme}

输出为:1.log_date +%Y-%m-%d-%H-%M

c)tme=move_data.log_"date +%Y-%m-%d-%H-%M"

echo ${tme}

输出为:1.log_date +%Y-%m-%d-%H-%M

3、其他[3]

1)command line的每一个charactor,分为如下两种:

*literal:普通纯文字,对shell 来说没特殊功能

*meta:对shell来说,具有特定功能的特殊保留字符

IFS:由<space><tab><enter>三者之一组成,用来拆解 command line的每一个词(word),因为command line 是按词来处理的。

CR:由<enter>产生。CR 用来结束 command line

=:设定变量。

$:作变量或运算替换

>:重导向 stdout

<:重导向 stdin

|:管道

&:后台运行。

():将其内的命令置于 嵌套子shell中执行,或用于运算或命令替换。

{}:将其内的命令置于non-named function中执行,或用在变量替换的界定范围

11 ;:在前一个命令结束时,忽略其返回值,继续执行下一个命令

12 &&:在前一个命令结束时,若返回值为 true,继续执行下一个命令

13 ||:在前一个命令结束时,若返回值为false,继续执行下一个命令。

14 !:执行 history 列表中的命令

2)假如需要在command line中将这些保留字符的功能关闭,就需要quoting处理。在bash中,常用的quoting 有三种方法:

hard quote:' ' (单引号),在 hard quote 中的所有meta 均被关闭

soft quote:" " (双引号),在soft quoe 中大部份meta都会被关闭,除$,`,\

escape: \(反斜线),紧接 escape之后的单一meta被关闭

参考

1http://www.cnblogs.com/mydomain/archive/2011/08/21/2148626.html

2】 开头几句话很关键

http://www.xxlinux.com/linux/article/development/shell/2008-04-30/14340.html

3http://hi.baidu.com/zihengxue/blog/item/3e1e1b464880800d6a63e51d.html

4http://www.cnblogs.com/fhefh/archive/2011/04/21/2024198.html

目录
相关文章
|
7月前
|
Shell
shell 单引号和双引号区别
shell 单引号和双引号区别
45 0
|
7月前
|
Shell Linux 信息无障碍
5 个有用的 Linux Shell 转义序列
5 个有用的 Linux Shell 转义序列
|
运维 Shell C语言
运维(09)- shell单引号和双引号
运维(09)- shell单引号和双引号
43 0
|
Shell Linux
shell中的单引号字符' 双引号字符" 反斜杠字符/ 反引号字符`
反斜杠的另一种作用,就是当反斜杠用于一行的最后一个字符时,shell把行尾的反斜杠作为续行,这种结构在分几行输入长命令时经常使用。
|
Shell Java
shell编程之转义和引用
shell中有两类字符,一类是普通字符,在Shell中除了本身的字面意思外没有其他特殊意义,即普通纯文本;另一类即元字符,是Shell的保留字符,在Shell中有着特殊的含义。 一、转义 转义是指使用转义符引用单个字符,从而使其表达单纯的字符的字面含义。
1913 0
|
Shell Linux
shell脚本中的反引号,单引号,双引号与反斜杠
转自:http://blog.sina.com.cn/s/blog_6561ca8c0102we2i.html   反引号位 (`)经常被忽略,而且容易与单引号弄混。它位于键盘的Tab键的上方、1键的左方。
1620 0
|
2月前
|
Shell
一个用于添加/删除定时任务的shell脚本
一个用于添加/删除定时任务的shell脚本
106 1