Shell(Bash)单引号、双引号、不加引号和反引号用法详解

转自:http://c.biancheng.net/view/951.html

简要总结

  1. 不加引号:不会将含有空格的字符串视为一个整体输出, 如果内容中有变量等,会先把变量解析出结果,然后在输出最终内容来,如果字符串中带有空格等特殊字符,则不能完整的输出,需要改加双引号,一般连续的字符串,数字,路径等可以用。
  2. 单引号:可以说是所见即所得:即将单引号内的内容原样输出,或者描述为单引号里面看到的是什么就会输出什么。
  3. 双引号:把双引号内的内容输出出来;如果内容中有变量,会先把变量解析出结果,然后在输出最终内容来。单引号和双引号之分,二者的主要区别在于,被单引号括起来的字符都是普通字符,就算特殊字符也不再有特殊含义;而被双引号括起来的字符中,“$”、"\“和反引号是拥有特殊含义的,”$"代表引用变量的值,而反引号代表引用命令。
  4. 反引号:如果需要调用命令的输出,或把命令的输出赋予变量,则命令必须使用反引号包含,这条命令才会执行。反引号的作用和 $(命令) 是一样的,但是反引号非常容易和单引号搞混,所以推荐大家使用 $(命令) 的方式引用命令的输出。

举例

# 1、有空格,必须加双引号。比如 name=zhang san 这样执行就会出现问题,而必须用引号括起来
[root@localhost ~]# name="zhang san"
#定义变量name的值是zhang san

#2、如果输出时使用单引号,则$name原封不动地输出
[root@localhost ~]# echo '$name'
$name
#但是如果反引号括起来的命令又被单引号括起来,那么这条命令不会执行,`date`会被当成普通字符输出
[root@localhost ~]# echo '`date`'
`date`

#3、如果输出时使用双引号,则会输出变量name的值sc
[root@localhost ~]# echo "$name"
zhang san
#如果被双引号括起来,那么这条命令会正常执行
[root@localhost ~]# echo "`date`"
20131021 日星期一 18:14:21 CST


#4、如果命令不用反引号包含,那么命令不会执行,而是直接输出 
[root@localhost ~]# echo ls
ls
#只有用反引号包含命令,这条命令才会执行
[root@localhost -]# echo `ls`
anaconda-ks.cfg install.log install.log.syslog sh test testfile
#使用用$(命令)的方式也是可以的
[root@localhost ~]# echo $(date)
20131021 日 星期一 18:25:09 CST
#反引号的命令会正常执行
[root@localhost ~]# echo `date`
2013 1021 日星期一 18:16:33 CST
  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值