Linux中单引号和双引号在命令、文件名使用详解
2021/10/2 7:13:12
本文主要是介绍Linux中单引号和双引号在命令、文件名使用详解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
前言
近期在公司做了一个需求,主要都是涉及shell脚本的修改和编写,发现自身对Linux中的单双引号的作用很不熟练,导致在一些嵌套使用单双引号的情景下发生了误用。为此,写一篇博客来从最基本的单层运用到嵌套运用的情景进行总结。
基本介绍和使用
单引号:
单引号的作用会忽略所有的命令和特殊字符,让引号中的内容按字符串输出。
双引号:
双引号中的内容,系统扫描其中的命令和特殊字符,让参数以实际的值进行输出。
例子:
在该例子中,定义一个变量a,分别通过单引号和双引号进行输出,可以看到单引号下,以该变量的字面上的值进行输出,而双引号则是获取了该变量的实际值进行输出显示。
文件名中的使用
首先提个问题,以下三种命名方式的文件,他们有什么区别?
他们是一个文件还是三个文件呢?
答案是:三个文件!
注意
1.虽然文件名中有双引号或者单引号,但是这些文件并不是同一个文件,想要使用命令编辑,修改文件,也不能直接 vi “test.txt”/vi ‘test.txt’,因为这样修改的是test.txt文件。如果要对这些文件进行操作,则要使用vi “‘test.txt’”(双嵌套单,操作’test.txt’)或者vi ‘“test.txt”’(单嵌套双,操作"test.txt")或者使用转义字符"\"。
2.切记不能使用单嵌套单或者双嵌套双,否则,这样操作的文件还是test.txt
嵌套使用
了解了单双引号的基本用法后,接着来讲嵌套使用
例子:
cmd="" for arg in "$@"; do cmd="$cmd \"$arg\"" done eval $cmd
该例子是通过输入的参数进行解析并且执行,这里的参数是命令+文件名。例如:commit test.txt
而当我们的文件名中包含有空格,例如:commit test file.txt
那么,我们则需要用""将文件名全部包含进来,防止空格被命令隔断,即:“commit” “test file.txt”
所以,传进来的参数都要为"$arg",而因为最外层还有一层"",所以这里需要用转义字符"\",
即:\"$arg\"
总而言之,当我们要使用多层引号时,要注意判断是否为同一双引号或者同一单引号,根据语义来决定是否需要使用转义字符来将引号保留。
这篇关于Linux中单引号和双引号在命令、文件名使用详解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-12如何创建可引导的 ESXi USB 安装介质 (macOS, Linux, Windows)
- 2024-11-08linux的 vi编辑器中搜索关键字有哪些常用的命令和技巧?-icode9专业技术文章分享
- 2024-11-08在 Linux 的 vi 或 vim 编辑器中什么命令可以直接跳到文件的结尾?-icode9专业技术文章分享
- 2024-10-22原生鸿蒙操作系统HarmonyOS NEXT(HarmonyOS 5)正式发布
- 2024-10-18操作系统入门教程:新手必看的基本操作指南
- 2024-10-18初学者必看:操作系统入门全攻略
- 2024-10-17操作系统入门教程:轻松掌握操作系统基础知识
- 2024-09-11Linux部署Scrapy学习:入门级指南
- 2024-09-11Linux部署Scrapy:入门级指南
- 2024-08-21【Linux】分区向左扩容的方法