首页
学习
活动
专区
工具
TVP
发布

Linux SHELL编程:程序员不得不掌握的引号用法

前些天小编闲来无事,在一个有关linux的交流群中聊天。这时有位小伙伴突然截图在群中,说他从网上照搬着敲出来的一段shell脚本,怎么运行都不对,一直报错,问我们怎么回事?

群里面的各路大神纷纷要求他贴出代码,后来发现他仅仅是一组引号打错了,所以导致脚本调试通不过。我们不知道他从哪里照搬过来的脚本,还是他手误打错的,各路大神纷纷教育他,linux中的脚本编写,引号用法是各不相同的。

小编我结合群友们的聊天内容,以及我自己测试出来的一些结果,总结一下linux SHELL编程中的引号用法。

在shell编程中,引号多数是给变量赋值时候加载变量值得外面的。一般情况下,为普通变量定义赋值的方式有3种,见下图:

变量的内容可以用单引号、双引号和无引号,但是这三种的含义是不同的。具体有哪些不同呢?下面我们来一一描述:

用单引号的时候,所见即所得,意思就是单引号内的所有内容都原样输出,或者描述为单引号里面看到的是什么就会输出什么,这称之为强引用。

用双引号的时候,输出双引号内的所有内容,但是内容里面含有命令、变量、特殊转义字符等,就会先把这些命令变量等解析出结果以后再输出最终内容,这称之为弱引用。

不用引号的时候,赋值时,如果内容中有空格,赋值就只会取空格之前的内容,即赋值变得不完整了,甚至直接报错,正常情况下,只有连续的字符串、数字、路径等可以不加任何引号进行赋值和输出的才用无引号这种方式赋值,不过还是推荐使用双引号替代无引号的的情况,当然很多时候为了提高录入效率,只要确保无引号不出差错,也是可以的。

还有一种称之为反引号,一般用于引用命令,执行的时候命令会被执行,相当于$(),赋值和输出都要用反引号将命令引起了。

请见下图,小编我用几个引号配合变量赋值作的测试,分布对aaa、bbb、ccc这3个变量进行赋值,赋值内容为today is `date`,其中aaa变量值不加引号,bbb变量值加双引号,ccc变量值加单引号;随便变量值内容我用的是一样的,但是因为引号不同,所以最好输出变量的结果必然不同。

对aaa的变量输出是空,因为不加引号只适合没有空格的连续字符串,现在字符串中有空格,赋值不完整,直接报错,赋值不成功,当然就输出为空了。

对bbb的变量输出是包含了当前的时间,因为双引号是弱引用,引号内有命令就会解析完再输出。

对ccc的变量输出是原样输出,因为单引号是强引用,就是原样输出。

最好强调,命令要用反引号反引出,才会被解析。

今天的分享就这么多,如果你喜欢本文,一定要给小编我点赞、收藏、和转发!另外,小伙伴们有什么计算机方面的内容想了解的可以给小编我留言,小编我一定好好研究回馈给各位!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180814A1OKF200?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券