shell中单引号、双引号、反引号、反斜杠的使用
shell可以识别4种不同类型的引字符号: 单引号字符('') 双引号字符("") 反斜杠字符(\) 反引号字符也就是ESC下方的键(`)
1. 单引号 ( '' ) :当shell碰到第一个单引号时,它将忽略掉其后所有特殊字符,直到右引号位置结束。
例如
有个电话本文件phonenum
内容如下:
sophia 12345678
sophia zhang 45678901
sophia wang 01234567
如果要查找sophia zhang的话,就不能用
# grep sophia zhang phonenum
这个命令的意思是:从zhang phonenum这两个文件中查找sophia的关键字
所以说,我们要用单引号('')把sophia zhang引起来,也就是下面的命令
# grep 'sophia zhang' phonenum
所以说,当shell碰到第一个单引号时,它将忽略掉其后所有特殊字符,直到右引号位置结束。
2. 双引号 ( "" )
双引号作用与单引号类似。单引号是让shell忽略所有特殊字符,而双引号只要求忽略大多数的字符。
具体说,括在双引号中的三种特殊字符不被忽略:$,\,` ,即双引号会解释字符串的特别意思,而单引号直接使用字符串.如果使用双引号将字符串赋给变量并反馈它,实际上与直接反馈变量并无差别。如果要查询包含空格的字符串,经常会用到双引号。
# x=*
# echo $x
anaconda-ks.cfg install.log install.log.syslog
上面的命令会列出所在目录下的文件
# echo '$x'
$x
单引号只当普通的字符列出来
# echo "$x"
*
双引号是输了里面变量的内容
通过这个例子可以看出无引号、单引号和双引号之间的区别。在最后一种情况中,双引号告诉shell在引号内照样进行变量名替换,所以shell 把$x替换为*,因为双引号中不做文件名替换,所以就把*作为要显示的值传递给echo。 对于第一种情况需要进一步说明,shell在给变量赋值时不进行文件名替换(这从第三种情况中也能看出来),各步骤发生的精确次序如下: shell扫描命令行,把x的值设为星号*;
shell再次扫描命令行,碰到星号*,把它替换成当前目录下的文件清单;
shell启动执行echo命令,把文件清单作为参数传递给echo.
这个赋值的先后次序非常重要:shell先作变量替换,然后作文件名替换,最后把这行处理为参数
3. 反引号(``)
命令替换是指shell能够将一个命令的标准输出插在一个命令行中任何位置。shell中有两种方法作命令替换:把shell命令用反引号或者$(...)结构括起来,其中,$(...)格式受到POSIX标准支持,也利于嵌套。
# echo The date and time is `date`
The date and time is Wed Feb 17 13:14:43 CST 2010
# echo Your current working directory is $(pwd)
Your current working directory is /root
这里的$pwd就相当于 `pwd`
4. 反斜杠 backslash-escaped( \ )
反斜杠一般用作转义字符,或称逃脱字符,linux如果echo要让转义字符发生作用,就要使用-e选项,且转义字符要使用双引号
echo -e "\n"
反斜杠的另一种作用,就是当反斜杠用于一行的最后一个字符时,shell把行尾的反斜杠作为续行,这种用法,在分几行输入长命令时经常使用。
相关文章推荐
★关于linux系统中命令的使用详解
★Linux主要shell命令详解
★Linux shell内核使用
★shell 中的参数替换
★shell取得文件行数6法
★Linux主要shell命令详解
Linux部分精彩文章推荐
|
shell中单引号、双引号、反引号、反斜杠的使用相关推荐
- Sed 删除匹配行,匹配的字符用Shell变量替换,且变量里含有斜杠“/”时,无法删除 解决办法
原文链接: https://zhidao.baidu.com/question/2138070399877009148.html 修改语法,用#代替",这个只能用在sed的s替换命令中,如: ...
- shell中单引号双引号反引号的区别
本文首发于 http://blog.csdn.net/lineuman 1.shell中单引号,双引号,反引号的区别? 2.shell IFS解惑? 2017.4.19答 在shell中这几个引号的区 ...
- Linux Shell中单引号、双引号、反引号的解释
Linux Shell中单引号.双引号.反引号的解释 转自https://zhuanlan.zhihu.com/p/166184390 1.单引号(' ') 单引号所见即所得,直接显示单引号里的内容. ...
- shell中单引号,双引号,反引号,不用引号的使用区别
shell定义字符串变量时字符串可以用单引号,也可以用双引号,也可以不用引号,如果无特殊情况话,三者效果一样 1.单引号和双引号的区别 str=yalong echo "The str ...
- shell中单引号、双引号与反引号的区别(学习笔记,摘抄版)
单引号''和双引号"" 两者都是解决变量中间有空格的问题. 在bash中"空格"是一种很特殊的字符,比如在bash中这样定义str=this is String ...
- shell 编程中空格的使用,双引号,单引号,反引号
http://blog.csdn.net/panda19881/article/details/6626727 1.定义变量时, =号的两边不可以留空格. eg: gender=femal----ri ...
- linux bash shell中,单引号、 双引号,反引号(``)的区别及各种括号的区别
一.单引号和双引号 首先,单引号和双引号,都是为了解决中间有空格的问题. 因为空格在linux中时作为一个很典型的分隔符,比如string1=this is astring,这样执行就会报错.为了避免 ...
- Linux--Linux Shell 中的反引号,单引号,双引号
反引号位 (`) 位于键盘的Tab键的上方.1键的左方.注意与单引号(')位于Enter键的左方的区别. 在Linux中起着命令替换的作用.命令替换是指shell能够将一个命令的标准输出插在一个命令行 ...
- shell双引号、单引号、反撇号的使用
1.命令和文件自动补全 Tab键 2.常见快捷键 ^c 终止前台运行的程序^z 将前台运行的程序挂起到后台^d 退出 等价exit^l 清屏 ^a |home 光标移到命令行的最前端^e |end 光 ...
最新文章
- Java线程池使用与原理
- 探讨.NET Core中实现AES加密和解密以及.NET Core为我们提供了什么方便!
- jQuery学习笔记——事件
- 计算机科学与技术专业用英语怎么写,计算机科学与技术专业专业英文简历模板...
- angular学习笔记(十九)-自定义指令修改dom
- HDU 4547 CD操作
- 理解PHP5中static和const关键字
- ThinkSNS Plus PHP开发概述
- cad.net 在cad2008引用了错误的com接口的dll导致出现了
- Android开发之Activity(实现Activity跳转)
- 关于Git小乌龟的安装及简单使用
- Teraterm 脚本
- SLG游戏中绘制六边形网格地形
- 微信公众号开发之授权
- docker实践(2)常用命令和DockerFile详解
- 根据日期获取农历节日
- synchronized(this)和synchronized(.class)的理解
- 一等号,二等号和三等号区别
- 51单片机驱动DS18B20温度传感器测量温度
- 【Datawhale可解释性机器学习笔记】预备知识学习
热门文章
- 小米“祭出” AIoT 神器!| 技术头条
- 为何要弃 Java、Swift 于不顾,而选择 Python?
- 马化腾、李彦宏、雷军,程序员国服三强谁的编程能力最牛?
- python换零钱有多少种方案_Python之100个项目:零钱转换程序
- aptitude安装出现依赖_开发函数计算的正确姿势——依赖安装方法一览
- mysql数据库不存在_mysql 数据库不存在
- 安装ie9提示未能完成安装_Windows 7下安装IE 11失败,提示:Internet Explorer未能完成安装...
- overscroll-behavior称为“滚动链”
- pnpm 是更快的包管理工具
- HTML固定内容的css代码,普通文本重内容的HTML/CSS设计