、转义
单引号和双引号都能关闭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
字符串可以用单引号,也可以用双引号,也可以不用引号。单双引号的区别跟PHP类似。
单引号
str='this is a string'
单引号字符串的限制:
- 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
- 单引号字串中不能出现单独一个的单引号(对单引号使用转义符后也不行),但可成对出现,作为字符串拼接使用。
双引号
your_name='runoob'
str="Hello, I know you are \"$your_name\"! \n"
echo -e $str
输出结果为:
Hello, I know you are "runoob"!
双引号的优点:
- 双引号里可以有变量
- 双引号里可以出现转义字符