专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

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

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/2/17 11:46:21       共计:3623 浏览
单引号和双引号用于变量值出现空格时,比如 name=zhang san 这样执行就会出现问题,而必须用引号括起来,比如 name="zhang san"。

不过,引号有单引号和双引号之分,二者的主要区别在于,被单引号括起来的字符都是普通字符,就算特殊字符也不再有特殊含义;而被双引号括起来的字符中,"$"、"\"和反引号是拥有特殊含义的,"$"代表引用变量的值,而反引号代表引用命令。还是来看例子吧:

[root@localhost ~]# name=sc
#定义变量name的值是sc
[root@localhost ~]# echo '$name'
$name
#如果输出时使用单引号,则$name原封不动地输出
[root@localhost ~]# echo "$name"
sc
#如果输出时使用双引号,则会输出变量name的值sc
[root@localhost ~]# echo `date`
2013 10月 21 日星期一 18:16:33 CST
#反引号的命令会正常执行
[root@localhost ~]# echo '`date`'
'date'
#但是如果反引号括起来的命令又被单引号括起来,那么这条命令不会执行,`date`会被当成普通字符输出
[root@localhost ~]# echo "`date`"
2013年 10月 21 日星期一 18:14:21 CST
#如果被双引号括起来,那么这条命令又会正常执行

所以,如果需要在双引号中间输出"$"和反引号,则要在符号前加入转义符"\"。

反引号

如果需要调用命令的输出,或把命令的输出赋予变量,则命令必须使用反引号包含,这条命令才会执行,反引号的作用和 $(命令) 是一样的,但是反引号非常容易和单引号搞混,所以推荐大家使用 $(命令) 的方式引用命令的输出。命令如下:

[root@localhost ~]# echo ls
ls

如果命令不用反引号包含,那么命令不会执行,而是直接输出

[root@localhost -]# echo `ls`
anaconda-ks.cfg install.log install.log.syslog sh test testfile
#只有用反引号包含命令,这条命令才会执行
[root@localhost ~]# echo $(date)
2013年 10月 21 日 星期一 18:25:09 CST
#使用用$(命令)的方式也是可以的

还是这句话,不管是从容易混淆的角度,还是从 POSIX 规范的角度来说,尽量使用 $(命令) 的方式来引用命令的输出,而不要使用反引号。
版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:Java成员方法的声明和调用 | ·下一条:Java创建一个学生类

Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有