SHELL 变量引用
shell变量的引用非常重要,运用技巧灵活多变
变量的引用主要包含四类:双引号引用、单引号引用、反引号引用、反斜线引用
" " 双引号 屏蔽除美元符号$、反引号( ` )和反斜线( \ )之外的所有字符
' ' 单引号 屏蔽所有的字符
`` 反引号 shell将反引号中的内容解释为系统命令
\ 反斜线 转义符,屏蔽下一个字符的特殊含义
shell变量的引用指的是 用引用符号将字符串引起来,从而屏蔽特殊字符被shell解释为其他含义。比如通配符星号(*)表示匹配任意字符串,如果引号引起来则只表示星号

双引号屏蔽星号*特殊含义,解释为名称为a*的文件
一、双引号
1、双引号内,除美元符号$、反引号( ` )和反斜线( \ )字符有特殊含义外,其他的所有字符都解释为表面字符含义
2、双引号的第二个作用是 双引号引用变量能够防止字符串分割,保留变量中的空格

上图中的字符we are等等以及空格都解释为表面含义,只有$符号解释为引用符号,将variable的值引用出来了,只有反引号将命令uname -r标准输出赋给了变量,回显到标准输出了

(单词拼错了,将错就错吧)echo $varibale2,因为没有使用双引号将引用变量引用起来,即"$varibale2",所以shell将“this is tree”之间的空格进行了分割,而echo "$variable2"则保留了空格
二、单引号
单引号引用所有的字符,即单引号中字符除单引号之外都解释为字面意义。这样的话,在单引号内引用变量,就不具备引用的作用了

环境变量PWD在双引号中$PWD表示当前目录,而在单引号中仅仅解释为$PWD

如果字符串中有单引号,怎么办?如上图,第一使用双引号将单引号的含义屏蔽掉;第二种将字符串分成三段来解释,三段中的两个单引号,在使用双引号将其屏蔽
’
三、命令替换
命令替换是指将命令的标准输出作为值赋给某个变量,shell使用命令替换有两种方式:
一、使用反引号;而使用$()符号
语法格式:
·Linux命令·
$(Linux命令)

实质上上图命令进行了两步操作:
第一步:先进行反引号`uname -r`或者$(uname -r),得到到内核版本号(反引号会首先被执行,执行结果作为外部的输入,然后其次是执行cd命令)
第二步,执行cd命令,即cd /lib/modules/3.10.0-1127.el7.x86_64/kernel
注意反引号也存在字符串分割特性

反引号··与$()的效果一样,区别是$()可以实现嵌套

END
SHELL 变量引用的更多相关文章
- 2.8 补充:shell变量引用方式
一 变量 变量:本质上是程序中保存用户数据的一块内存空间,变量名就是内存空间地址. Shell中:变量可由字母数字和下划线组成,以字母或下划线开头. 命名:PATH=/sbin ...
- Shell 变量引用实例
初学 Shell 编程时,对变量各种引用使用不太熟悉,走了很多弯路,本文记录变量引用的一些用法,希望对大家有所帮助. 引用 引用指将字符串用引用符号引起来,以防止特殊字符被 shell 脚本解释为其他 ...
- shell变量引用
var="www.sina.com.cn" echo ${var#*.} #sina.com.cn 从前向后删 echo ${var##*.} #.cn 贪婪模式从前向后删 ech ...
- 小鸟初学Shell编程(七)变量引用及作用范围
变量引用 那么定义好变量,如何打印变量的值呢?举例下变量引用的方式. ${变量名}称作为对变量的引用 echo ${变量名}查看变量的值 ${变量名}在部分情况下可以省略成 $变量名 [root@li ...
- 使用expect实现自动交互,shell命令行自动输入,脚本自动化,变量引用,expect spawn执行带引号命令,expect 变量为空,不生效,不能匹配通配符*,函数,数组
背景 有需求,在允许命令或者脚本跳出交互行,需要进行内容输入,但需要人手动输入,不是很方便,此时可以通过expect来实现自动互动交互. expect是一个自动交互功能的工具,可以满足代替我们实际工作 ...
- awk中引用shell变量的方法
1.通过命令行参数定义变量时引用: awk -v awk变量名= shell变量名 #!/bin/bash var4bash=test awk -v var4awk="$var4bash&q ...
- shell变量详解
1 shell变量基础 shell变量是一种很"弱"的变量,默认情况下,一个变量保存一个串,shell不关心这个串是什么含义.所以若要进行数学运算,必须使用一些命令例如let.de ...
- 三、Shell变量类型和运算符
一.Shell变量的应用 1.Shell变量的种类 ·用户自定义变量:由用户自己定义.修改和使用 ·预定义变量:Bash预定义的特殊变量,不能直接修改 ·位置变量:通过命令行给 ...
- Shell入门教程:Shell变量
变量 是一种很“弱”的变量,默认情况下,一个变量保存一个串,Shell不关心这个串是什么含义.所以若要进行数学运算,必须使用一些命令例如 let.declare.expr.双括号等. Shell变量可 ...
随机推荐
- [转]CAP和BASE理论
1. CAP理论 2000年7月,加州大学伯克利分校的Eric Brewer教授在ACM PODC会议上提出CAP猜想.2年后,麻省理工学院的Seth Gilbert和Nancy Lynch从理论上证 ...
- Vue的常用特性
Vue的常用特性 一.表单基本操作 都是通过v-model 单选框 1. 两个单选框需要同时通过v-model 双向绑定 一个值 2. 每一个单选框必须要有value属性 且value值不能一样 3. ...
- C ++基本输入/输出
C ++基本输入/输出 本文将学习如何使用cin对象从用户那里获取输入,并使用cout对象在示例的帮助下向用户显示输出. C ++输出 在C ++中,cout将格式化的输出发送到标准输出设备,例如屏幕 ...
- Node.js使用本地依赖
最近项目组写了几个模块,打算采用依赖的方式来使用它们. 因为敏感性问题,不打算发布到npm官方仓库:自行搭建一个npm仓库成本也大. 所以最后决定采用本地安装. 即在package.json中填写如下 ...
- 负载均衡算法: 简单轮询算法, 平滑加权轮询, 一致性hash算法, 随机轮询, 加权随机轮询, 最小活跃数算法(基于dubbo) java代码实现
直接上干活 /** * @version 1.0.0 * @@menu <p> * @date 2020/11/17 16:28 */ public class LoadBlance { ...
- springboot实现自定义拦截器
为了更容易理解,我们通过一个代码例子来演示. 例子: 我们现在要访问http://localhost:8080/main.html页面,这个页面需要登录之后才能够浏览,没登录不能浏览. 那么现在问题来 ...
- .Net RabbitMQ实战指南——进阶(二)
持久化 持久化可以提高RabbitMQ的可靠性,防止异常情况下的数据丢失.RabbitMQ的持久化分为三个部分:交换器的持久化.队列的持久化和消息的持久化. 交换器的持久化通过声明队列时将durabl ...
- C语言const关键字的作用
1 #define _CRT_SECURE_NO_WARNINGS 2 #include <stdio.h> 3 #include <string.h> 4 #include ...
- 【NX二次开发】Block UI 双精度
属性说明 常规 类型 描述 BlockID String 控件ID Enable Logical 是否可操作 Group Logical ...
- 【VBA】延时函数
延时函数(单位秒),例如延时0.5秒 1 Sub 延时() 2 delay (0.5) 3 Debug.Print "延时0.5秒" 4 End Sub 5 6 Sub delay ...