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-12-18git仓库有更新,jenkins 自动触发拉代码怎么配置的?-icode9专业技术文章分享
- 2024-12-18Jenkins webhook 方式怎么配置指定的分支?-icode9专业技术文章分享
- 2024-12-13Linux C++项目实战入门教程
- 2024-12-13Linux C++编程项目实战入门教程
- 2024-12-11Linux部署Scrapy教程:新手入门指南
- 2024-12-11怎么将在本地创建的 Maven 仓库迁移到 Linux 服务器上?-icode9专业技术文章分享
- 2024-12-10Linux常用命令
- 2024-12-06谁看谁服! Linux 创始人对于进程和线程的理解是…
- 2024-12-04操作系统教程:新手入门及初级技巧详解
- 2024-12-04操作系统入门:新手必学指南