Bash中的单双引号用法,看完你就真的懂了|天天看点
双引号与单引号解读我没有完整看完过关于介绍bash或Linux的书籍,教程倒是看了好些个。这些书或视频对于Linux,Bash中的单、双引号,很多都只是流于表面的说明,用一些什么强引用,弱引用类的术语,听起来好像是懂了,实际一用起来就一个头两个大。最近整理笔记时看到关于bash引号的内容,检讨了下我自己,也时常摸不清头脑到底怎么使用引号,什么时候用,什么时候不用,有时用了起反效果,于是就有了这篇博文。白嫖过[马哥教育](https://www.magedu.com/)的视频,受益匪浅。再此也十分感谢[骏马金龙](https://junmajinlong.com/),让我收获良多。由于本文使用了大量的单双引号,导致代码块不能正确解析,所以有部分代码高亮会失效。单双引号使用规则:一般字面常量用单引号''括起;如果含有变量,且我们需要使用该变量的值,则用双引号""括起;要么就不加引号,直接暴露给bash解析。1. 在单引号所有字符都将失去特殊含义。2. 在双引号只有这些字符中是具有特殊含义的,也就说是"{1..3}","((1+2))",这些出现在双引号内,都将视为普通字串。$美元符
(资料图片仅供参考)
\ 反斜杠 相当与也是一次解析
` 反引号
! 叹号
不加引号:如果内容中有命令、变量等,会先把变量,命令解析出结果,且不会将含有空格的字符串视为一个整体,然后输出最终内容来。即是说如果有空格,那么很大几率不会得到你想要的结果,所以说为什么不管三七二十一,都推荐加上引号的原因就在这。
单引号: 可以说是所见即所得;即将单引号内的内容原样输出,或者说单引号里面看到的是什么,就会输出什么,
另外,单引号自身也会配对,**如果单引号已经解析完成,不会再次组合解析**
双引号: 把双引号内的内容解析并输出;如果内容中有命令、变量等,会先把变量、命令解析出结果,然后最终输出内容。
双引号会保留格式不变
双引号保留双引号
另外在类似sed,awk一些命令中本身具有特殊符号, 在bash解析命令行时成生的命令有所冲突。sed
awk
awk输出既有双引号又有单引号
探索性实验,实现引号自由!!!
使用双引号开头,实现awk输出: "It's good."
虽然是有些费力不讨好,但能够更清楚的了解`bash`解析时,到底发生了些什么。这次的探索总体上来说还是非常值得的。