SHELL中的引用之引用变量
引号的特殊效果就是,保护字符串中的特殊字符不被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中的引用之引用变量相关推荐
- while读取文件 Shell中while循环的陷阱, 变量实效, 无法赋值变量
在写while循环的时候,发现了一个问题,在while循环内部对变量赋值.定义变量.数组定义等等环境,在循环外面失效. 一个简单的测试脚本如下: #!/bin/bash echo "abc ...
- shell中的命令替换和变量替换
一.命令替换 可以用'command', 也可以用$(command). 二者是有区别的,先看一下'command'(注意:这里不是引号,而反引号) 1. `command' 用来做命令替换 2. $ ...
- 子shell中使用相关的环境变量
- shell中的变量与eval(转)
原文链接:http://www.361way.com/shell-eval-variable/4957.html shell 中经常会用到变量的嵌套的情况.比如,单个或多个变量的值作为变量名,再对该变 ...
- linux基础:shell中的sh与bash区别与常用命令
目录 一,什么是sh和bash? 二,shell的基本用法 2.1,变量 2.2,算术运算 2.3,使用 bash 计算器在shell脚本中进行浮点运算 2.4,shell中的条件判断命令test和[ ...
- SHELL中if的使用
shell中if的使用 shell中if的基本使用 shell中if的基本使用 SHELL中if中条件表达式的使用 shell中if的整数比较 shell中if的浮点数比较 shell中if的字符比较 ...
- shell 中引用参数总结
shell 中引用参数总结 1 在shell中定义变量之后引用这个变量要用 $ 符号,例如: (一下例子是定义了一个变量 a ,然后回显这个变量) 2 在向函数传递参数后,要引用参数,因 ...
- YAML文件(.yml)中的键(key)通过变量引用来设置
转自:https://www.cnblogs.com/haycheng/p/13299183.html 通过变量引用设置配置量的[值](value) 在YAML文件中,一个配置量的值可以通过引用另一个 ...
- python中一个对象只能被一个变量引用吗_Python中for循环里的变量无法被引用的解决方法...
在之前的编程语言里,学到for循环里面是可以重置变量i的值的,然后让整个for循环从头开始,但是在python里面却行不通这是为什么呢? 在python中,for循环相当于一个迭代器(Iterator ...
最新文章
- SAP支持包、插件程序和附件
- 嘉宾及议程速览,第四范式2021发布会进入一周倒计时
- Percent encode in consulting package
- 数据结构--二叉树--路径 假设二叉树采用二叉链表方式存储, root指向根结点,node 指向二叉树中的一个结点, 编写函数 path,计算root到 node 之间的路径,(该路径包括root结
- 2020牛客NOIP赛前集训营-提高组(第六场)A-袜子分配【组合数学,结论】
- django前后端分离部署
- 【电路补习笔记】3、电感的参数与选型
- 如何用python的i2c教程_Micropython TPYBoard I2C的用法
- c语言指针变量的定义数组的长度,【C语言更新】指向数组的指针
- MTK 功耗优化(1)---MTK PerfService
- 监听 oracle执行sql语句,oracle SQL语句的监控 - 数据库相关 - 7点测试网
- 必装 6 款超神的 GitHub 插件
- Arduino—— SSD1306 OLED IIC
- 编译原理(整体理解)
- c语言中的矩阵求逆程序,C语言矩阵求逆
- android mixpanel可视化埋点框架解析
- Ubuntu 18.04.2 LTS Bionic Beaver 发布
- windows 剪贴板监控
- Centos8怎么进行复位清屏? Centos8终端复位清屏的技巧
- 5G NR PDSCH的相位跟踪参考信号PTRS
热门文章
- Linux之last命令
- varied字符串c语言,C语言输入输出问题解析研究.pdf
- 在Mac OS X 10.10.3下使用源码包编译安装GCC5.1
- php5实现web services
- PHP与Unicode签名(BOM)
- 基于Redis的用户发微博
- 测量两台机器的的网络延迟和时间差
- 中label换行问题_如何巧妙处理 Git 多平台换行符问题(LF or CRLF)
- python装饰器函数执行后日志_python 某一函数上面有多个装饰器
- python异常信息中最重要的部分是_Python中获取异常(Exception)信息