028-老男孩教育每日一题-单引号、双引号和不加引号区别

  • A+
所属分类:运维每日一题

总结说明:

单引号:

可以说是所见即所得:即将单引号内的内容原样输出,或者描述为单引号里面看到的是什么就会输出什么。

双引号:

特殊符号,有了原本的特殊意思,$LANG $()

把双引号内的内容输出出来;如果内容中有命令、变量等,会先把变量、命令解析出结果,然后在输出最终内容来。

双引号内命令或变量的写法为 命令或变量或$(命令或变量)。

无引号:

与双引号类似,支持通配符

把内容输出出来,可能不会将含有空格的字符串视为一个整体输出, 如果内容中有命令、变量等,会先把变量、命令解析出结果,然后在输出最终内容来,如果字符串中带有空格等特殊字符,则不能完整的输出,需要改加双引号,一般连续的字符串,数字,路径等可以用,不过最好用双引号替代之。

范例:

单引号

双引号

不加引号

工作中多用双引号,除非你有明确的特殊的需求。

实践演示

实例1:经过反引号的date命令,命令行测试

实例2:脚本中变量定义后,调试时测试

实例3:脚本重定义变量测试

结论:一般应用时,对于变量的定义,我们一般加双引号。

实例4:grep过滤字符串例子

实例5:grep过滤双引号(转义)例子

实例6:特殊例子:命令行带空格字符串可以不加引号。可以不加引号的例子。

结论:虽然不加引号可以追加内容到oldboy.txt中,生产环境中,我们习惯用""双引号替代。

实例7:特殊例子:awk调用shell变量涉及引号例子

提示:以上结果正好和前面的结论相反,这是awk调用shell变量的特殊用法。

##提示:这个例子特殊了一点。有关awk调用shell变量参考:

一道实用linux运维问题大的9钟shell解答方法。

http://oldboy.blog.51cto.com/2561410/760192

总结论

  1. 很多时候,总结的结论未必适合所有情况。但是,总结小结论,便于我们学习知识和对知识的深刻理解,因此推荐大家多做总结。
  2. 不要太纠结于结论,结论毕竟不是真理,知识我们学习过程的产物。就像数学里的平行线一样,在初中定义就是不相交的两条直线就是平行线,到了高中这个结论就是错的了。

今天是老男孩教育每日一题陪伴大家的第28天。

往期题目索引

http://www.drscrewdriver.com/100.html

weinxin
我的微信公众号
我的微信公众号扫一扫

发表评论

:?::razz::sad::evil::!::smile::oops::grin::eek::shock::???::cool::lol::mad::twisted::roll::wink::idea::arrow::neutral::cry::mrgreen: