LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1060|回复: 7

关于转义符!!!

[复制链接]
发表于 2007-6-4 01:19:30 | 显示全部楼层 |阅读模式
bash$ echo hello\!
    hello!
    bash$ echo "hello\!"
    hello\!
加双引号和不加为什么会有区别,该怎么理解呢????

还有这句话bash$ echo "\'Hello\', he said."
               \'Hello\', he said.
为什么这里的单引号不会被转义呢????
发表于 2007-6-4 01:34:48 | 显示全部楼层
the content which is referenced by double quotes will be treated as a single string
回复 支持 反对

使用道具 举报

发表于 2007-6-4 01:40:19 | 显示全部楼层
你可以用单引号。
$ echo 'hello!'
hello!

至于原因,也许是楼上说的,具体原因我不知道。也许是 bash 的规矩?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-4 01:49:59 | 显示全部楼层
hello\!这里不加双引号也是个单一字符串啊, 还是不理解,麻烦能帮我解释详细点吗,谢谢了,头大了!!!!!!!
回复 支持 反对

使用道具 举报

发表于 2007-6-4 02:20:34 | 显示全部楼层
Post by donydh
hello\!这里不加双引号也是个单一字符串啊, 还是不理解,麻烦能帮我解释详细点吗,谢谢了,头大了!!!!!!!


"ONE" "TWO" "TREE"
"ONE TWO TREE"
回复 支持 反对

使用道具 举报

发表于 2007-6-4 21:13:40 | 显示全部楼层
看bash(1)手册页。
当backslash不被括起,那么它的作用就是保持后面字符的字面意思。
回复 支持 反对

使用道具 举报

发表于 2007-6-4 22:13:29 | 显示全部楼层
单引号与双引导的区别在于变量的引用。

所以,单引号之于'\',与双引导之于'\'相同。
回复 支持 反对

使用道具 举报

发表于 2007-6-5 21:27:24 | 显示全部楼层
单双引号都是保持引号内的字符串的字面意思,但是区别在于:
单引号是什么也不解释
双引号解释$ ,``(反引号)和反斜杠(后面跟着dollar$, `backtick, 双引号“, 反斜杠或者新行的时候)
所以 echo 'hello!' 中hello!是一个纯字符串
而 echo “hello!" 中会认为 !" 执行上一个以 “ 开头的命令(我不懂为什么,但是bash提示是这样),所以用\! 注释掉!的意思。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表