引号的特殊效果就是,保护字符串中的特殊字符不被shell 或者是shell 脚本重新解释或者扩展.
(这里所说的”特殊”指的是一些字符在shell 中具有的特殊意义,比如*)

在我们一般的生活中,引号内的内容往往有特殊的含义,而在Bash 中,当我们引用一个字符串,
我们是保护它的字面含义.

引用还可以抑制 echo 命令的换行作用.

例:

在一个双引号中直接使用变量名,一般都是没有问题的.它阻止了所有在引号中的特殊字符的
重新解释–包括变量名[2]–但是$,`和\除外.[3]保留$,作为特殊字符的意义,是为了能够在双
引号中也能够正常地引用变量(“$var”).这样在”"中可以使用变量所表达的

使用”"来防止单词分割.[4]如果在参数列表中使用双引号,将使得双引号中的参数作为一个参
数.即使双引号中的字符串包含多个单词(也就是包含空白部分),也不会变为多个参数

[cce]
variable1="a variable containing five words"
COMMAND This is $variable1 # COMMAND 将以7 个参数来执行
# "This" "is" "a" "variable" "containing" "five" "words"
COMMAND "This is $variable1" # COMMAND 将以1 个参数来执行
# "This is a variable containing five words"
variable2="" # 空值
COMMAND $variable2 $variable2 $variable2 # COMMAND 将不带参数执行
COMMAND "$variable2" "$variable2" "$variable2" # COMMAND 将以3 个空参数来执行
COMMAND "$variable2 $variable2 $variable2" # COMMAND 将以1 个参数来执行(2 空
格)
[/cce]

下面有个诡异的变量IFS

单引号操作总体上和”"很像,但不允许引用变量.因为$的特殊含义被关闭了.在”中除了’,其他
字符都没有特殊的含义了.所以单引号比双引号严格.
因为即使是\,在”中都被关闭了,所以你想在”中显示’的含义,将得不到预期的效果.

如果在”"中包含”!”的话,在命令行中将会出现错误.因为这个”!”被当作历史命令来解释了.
在一个脚本中,这种情况是不会发生的,因为在脚本中,Bash 历史记录被关闭了.

下边是一些关于”\”一些不协调的行为.
bash$ echo hello\!
hello!
bash$ echo “hello\!”
hello\!
bash$ echo -e x\ty
xty
bash$ echo -e “x\ty”
x y

转载于:https://blog.51cto.com/zoushj/1400524

SHELL中的引用之引用变量相关推荐

  1. while读取文件 Shell中while循环的陷阱, 变量实效, 无法赋值变量

    在写while循环的时候,发现了一个问题,在while循环内部对变量赋值.定义变量.数组定义等等环境,在循环外面失效. 一个简单的测试脚本如下: #!/bin/bash echo "abc ...

  2. shell中的命令替换和变量替换

    一.命令替换 可以用'command', 也可以用$(command). 二者是有区别的,先看一下'command'(注意:这里不是引号,而反引号) 1. `command' 用来做命令替换 2. $ ...

  3. 子shell中使用相关的环境变量

  4. shell中的变量与eval(转)

    原文链接:http://www.361way.com/shell-eval-variable/4957.html shell 中经常会用到变量的嵌套的情况.比如,单个或多个变量的值作为变量名,再对该变 ...

  5. linux基础:shell中的sh与bash区别与常用命令

    目录 一,什么是sh和bash? 二,shell的基本用法 2.1,变量 2.2,算术运算 2.3,使用 bash 计算器在shell脚本中进行浮点运算 2.4,shell中的条件判断命令test和[ ...

  6. SHELL中if的使用

    shell中if的使用 shell中if的基本使用 shell中if的基本使用 SHELL中if中条件表达式的使用 shell中if的整数比较 shell中if的浮点数比较 shell中if的字符比较 ...

  7. shell 中引用参数总结

    shell 中引用参数总结 1   在shell中定义变量之后引用这个变量要用  $ 符号,例如: (一下例子是定义了一个变量  a  ,然后回显这个变量) 2   在向函数传递参数后,要引用参数,因 ...

  8. YAML文件(.yml)中的键(key)通过变量引用来设置

    转自:https://www.cnblogs.com/haycheng/p/13299183.html 通过变量引用设置配置量的[值](value) 在YAML文件中,一个配置量的值可以通过引用另一个 ...

  9. python中一个对象只能被一个变量引用吗_Python中for循环里的变量无法被引用的解决方法...

    在之前的编程语言里,学到for循环里面是可以重置变量i的值的,然后让整个for循环从头开始,但是在python里面却行不通这是为什么呢? 在python中,for循环相当于一个迭代器(Iterator ...

最新文章

  1. SAP支持包、插件程序和附件
  2. 嘉宾及议程速览,第四范式2021发布会进入一周倒计时
  3. Percent encode in consulting package
  4. 数据结构--二叉树--路径 假设二叉树采用二叉链表方式存储, root指向根结点,node 指向二叉树中的一个结点, 编写函数 path,计算root到 node 之间的路径,(该路径包括root结
  5. 2020牛客NOIP赛前集训营-提高组(第六场)A-袜子分配【组合数学,结论】
  6. django前后端分离部署
  7. 【电路补习笔记】3、电感的参数与选型
  8. 如何用python的i2c教程_Micropython TPYBoard I2C的用法
  9. c语言指针变量的定义数组的长度,【C语言更新】指向数组的指针
  10. MTK 功耗优化(1)---MTK PerfService
  11. 监听 oracle执行sql语句,oracle SQL语句的监控 - 数据库相关 - 7点测试网
  12. 必装 6 款超神的 GitHub 插件
  13. Arduino—— SSD1306 OLED IIC
  14. 编译原理(整体理解)
  15. c语言中的矩阵求逆程序,C语言矩阵求逆
  16. android mixpanel可视化埋点框架解析
  17. Ubuntu 18.04.2 LTS Bionic Beaver 发布
  18. windows 剪贴板监控
  19. Centos8怎么进行复位清屏? Centos8终端复位清屏的技巧
  20. 5G NR PDSCH的相位跟踪参考信号PTRS

热门文章

  1. Linux之last命令
  2. varied字符串c语言,C语言输入输出问题解析研究.pdf
  3. 在Mac OS X 10.10.3下使用源码包编译安装GCC5.1
  4. php5实现web services
  5. PHP与Unicode签名(BOM)
  6. 基于Redis的用户发微博
  7. 测量两台机器的的网络延迟和时间差
  8. 中label换行问题_如何巧妙处理 Git 多平台换行符问题(LF or CRLF)
  9. python装饰器函数执行后日志_python 某一函数上面有多个装饰器
  10. python异常信息中最重要的部分是_Python中获取异常(Exception)信息