Shell中Quoting(引用),可以用来移除字符的特殊意思,令其保留字面含义;可以用来进行多种Shell Expansion。

有3种quoting机制:转义字符,单引号,和双引号。

1. 转义字符

非引用的反斜杠‘\’称为转义字符,它保留了后面单个字符的字面含义(移除了特殊意义)。有个例外,反斜杠作为输入行的最后一个字符,Shell将其视为续行符,删除随后的换行符,不会将该换行符作为参数的分隔符,就像这个字符没出现过。

2. 单引号

在单引号‘'’中的所有字符,都会保留它们的字面含义。注意,一个单引号不能出现在两个单引号中间,即使其前面有反斜杠也不行。

3. 双引号

双引号中除了4个字符’$‘,‘`’,‘\’和‘!’外,其它都保持字面含义(注,Shell在POSIX模式下,‘!’也保持字面含义)。

字符‘$’和‘`’会进行Shell Expansion(如变量扩展,命令替换等)。

反斜杠‘\’在‘$’,‘`’,‘"’,‘\’,和newline前面时,其会被移除掉,后面的字符不变,表示字面含义。

在可History expansion时,’!‘前面需添加‘\’,才能抑制该扩展,且’\‘不会被移除。

另,了解下特殊的ANSI-C Quoting,形式为$'string',string中的反斜杠‘\’和其后的字符会按照ANSI C的标准转义,结果就像‘$’符号不存在,只使用了单引号。如何使用ANSI-C Quoting,详见Bash编程中变量有无双引号探秘。

若感兴趣可关注订阅号”数据库最佳实践”(DBBestPractice).

转载于:https://blog.51cto.com/coveringindex/2142102

Shell中的Quoting相关推荐

  1. linux shell中的单引号与双引号的区别(看完就不会有引号的疑问了)(转)

    tips: ============================= IFS - LINUX字段分隔符,内部字段分隔符 IFS(Internal Field Seperator)在Linux的she ...

  2. shell中一些特殊命令|: 管道命令。;;在前一个命令结束时,而忽略其返回值,继续执行下一個命令。

    shell传递参数 $0 对应的是当前 Shell 脚本程序的名称,$#对应的是总共有几个参数,$*对应的是所有位置的参数值,$?对应的是显示上一次命令的执行返回值,而$1.$2.$3--则分别对应着 ...

  3. Linux随笔10-Ubuntu网络配置、非交互式远程主机登录以及shell中的数组应用(冒泡排序数组中的元素)

    Contents 1. Ubuntu系统网络配置总结 1.1. 配置主机名 1.2. 配置网卡名称 1.3. 配置网卡IP地址 2. 非交互式远程主机登录 2.1. 使用expect实现 2.2. 使 ...

  4. shell中十种实现自加的方法

    shell中十种实现自加的方法 let "n = $n + 1" : $((n = $n + 1)) ((n = n+1)) n=$(($n + 1)) : $[ n = $n + ...

  5. 【linux】shell中整数运算的加、减、乘、除

    1.使用双括号"(( ))" shell中变量实现加法的方法 d= $(($d + 2)) 例子如下 #!/bin/bash d=0 echo "d=$d"fo ...

  6. linux shell $0怎么输出,linux shell中$0,$?,$!等的特殊用法

    一.Shell脚本中$0.$?.$!.$$.$*.$#.$@等的意义说明 (1)$$ Shell本身的PID(ProcessID,即脚本运行的当前进程ID号) (2)$! Shell最后运行的后台Pr ...

  7. Linux从mysql中读取数据_linux shell中读写操作mysql数据库

    本文介绍了如何在shell中读写mysql数据库.主要介绍了如何在shell 中连接mysql数据库,如何在shell中创建数据库,创建表,插入csv文件,读取mysql数据库,导出mysql数据库为 ...

  8. shell中的函数shell中的数组告警系统需求分析

    2019独角兽企业重金招聘Python工程师标准>>> 20.16/20.17 shell中的函数 函数的概念 函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用 ...

  9. shell中大于、等于、小于

    shell中大于.等于.小于 -eq           等于 -ne           不等于 -gt            大于 -lt            小于 -ge           ...

  10. shell中竖线的作用_如何在 Linux 中安装、配置和使用 Fish Shell?

    每个 Linux 管理员都可能听到过 shell 这个词.你知道什么是 shell 吗? 你知道 shell 在 Linux 中的作用是什么吗? Linux 中有多少个 shell 可用? -- Ma ...

最新文章

  1. 万万没想到! logger.info() 还能导致线上故障?
  2. 从程序员到项目经理(20):让员工为目标而干活
  3. C#.NET学习笔记---C#中的条件编译
  4. 2017.04.02【NOIP 普及组】模拟赛C组 T1:区间
  5. “正则表达式”应当称为“规则表达式”
  6. Apache Log4j2 RCE 命令执行漏洞预警及修复方案
  7. 【机器视觉】机器视觉博客汇总
  8. Nova计算节点安装配置
  9. Linux命令工作中常用的总结
  10. 小孔成像实验探究的软件_【亲子实验】科学小制作:神秘小潜艇科学小论文作品在科学课(小学版)2004年第5期发表,科学小发明潜水艇与沉浮子...
  11. PyCharm配置QTDesigner和ui2py工具
  12. Asp.net MVC 3实例学习之ExtShop(一)————创建应用并设置开发环境
  13. 【号外】来人鸭~ 本公众号招人啦~
  14. 剪贴画制作相关资源收集
  15. tp6/thinkphp6实现微信小程序支付/微信支付v3版本,全部流程代码
  16. MineCraft - 服务端插件指令汇总
  17. 微信apk.1文件怎么打开
  18. Android recovery分区表
  19. 波士顿学院计算机科学专业,波士顿学院计算机专业
  20. 海康威视监控摄像头连接电脑教程

热门文章

  1. atitit 数字音频技术概论 艾提拉著 目录 1. 声学基础 2 1.1. 1.2人耳的听觉效应9 2 2. 第1章数字音频基础 2 2.1. 1.1音频的发展历史 2 2.2. 1.2音频的发展
  2. 《Java高级Struts2》教学大纲(云计算) 版本号 编写人 版本描述 V1.0 目录 课程教学目标 5 (一)知识目标 5 (二)能力目标 6 (三)速度目标 6
  3. Atitit需求文档模板大纲目录 attilax总结
  4. Atitit js canvas的图像处理类库attilax总结与事业
  5. Atitit.分布式远程调用  rpc  rmi  CORBA的关系
  6. paip.提升性能3倍--使用栈跟VirtualAlloc代替堆的使用.
  7. paip.netbeans断点调试debugger console输出乱码解决方案
  8. 最近卡脖子的汽车芯片产业链全景图(车规级芯片)
  9. 面对10倍需求只用 40% 成本,这是一种怎样的体验?
  10. 坚持开源、能力内化,中移苏研荣获“中国开源领军企业”大奖!