LinuxSir.cn,穿越时空的Linuxsir!

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

请问"",'',``个自的用法,什么时候该用,什么时候不该用

[复制链接]
发表于 2005-5-9 15:42:00 | 显示全部楼层 |阅读模式
请问下面这3个符号到底什么时候用?怎么个用法呢。
他们的作用其实我也知道,但是仍然不知道什么时候该用,什么时候不该用。
可能理解还是不深,想听听大家的高见。
这3个符号在shell里面的应用
''
""
``
发表于 2005-5-9 16:18:28 | 显示全部楼层
""--preserves (from interpretation) most of the special
characters
echo "something's "
echo "$variable"

''--preserves all special characters
echo 'something say "" '

``--command substitution
`basename $0`
回复 支持 反对

使用道具 举报

发表于 2005-5-9 16:20:30 | 显示全部楼层
首先了解shell中IFS(Interal Field Separator),shell处理一行命令的过程就是shell首先根据IFS将输入的command line分为几个字段(word),再对这些word先处理特殊meta,再重组整行。
IFS通常有三个:空格,制表键,回车
然后shell中输入的command line又分为普通纯文字literal和特殊保留字元meta,literal很简单就是通常输入的普通字符,但是meta确会比较难处理,比如你想给变量赋值this is a test
  1. $a=this is a test
复制代码

这样是不行的!(可以试试)
  1. $a="this is a test"
复制代码
这样就可以了,在这里空格就是所谓的meta,而双引号把它的meta功能给取消了,这就是双引号在这里的功能所在,说到这里总结一下:
单引号:会把所有字符meta功能取消
双引号:会把除去双引号,$,\,反引号这四个(我总结了四个)meta外的其他meta功能取消(比如空格等)
反引号:用作命令的替换,等价于$(command),但区别是嵌套的时候,反引号嵌套只能这样使用:
  1. `command1\`command2\``
复制代码
,而$(command)则可以直接:
  1. $(command1$(command2))
复制代码


这样说明白了吗?
回复 支持 反对

使用道具 举报

发表于 2005-5-9 16:23:53 | 显示全部楼层
$a="this is a test"  ---> a="this is a test"
--OR--
a=this\ is\ a\ test
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-9 17:41:30 | 显示全部楼层
简洁,清楚。明白了大半,非常感谢。
回复 支持 反对

使用道具 举报

发表于 2005-5-9 17:44:58 | 显示全部楼层
Post by qhgary
简洁,清楚。明白了大半,非常感谢。

看来还有没明白的了
多用自然会心领神会
回复 支持 反对

使用道具 举报

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

本版积分规则

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