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变量可 ...
随机推荐
- 如何查看Oracle SID即instance_name 和 dbname区别
SID 和 instance_name是一个实例名字db_name 是数据库名字搞清两个概念,数据库和实例 实例:实例是数据库启动时初始化的一组进程和内存结构 数据库:数据库则指的是用户存储数据的一 ...
- pytest + allure
参考allure官网: https://docs.qameta.io/allure/#_pytest 1.使用命令pip install pytest-allure安装 注意:我遇到的一个现象,用命令 ...
- VS Code 调试 OneFlow
VS Code 调试 OneFlow 本文介绍如何配置 VS Code,搭建 OneFlow 的 GUI 开发环境. 如果对于 VS Code 及其插件系统还不熟悉,可以参阅官方文档. 本文包括: 如 ...
- thymeleaf模板引擎基础知识
一.表达式 分为四类: 1.变量表达式 ${} :获取容器上下文变量的值. 举例: 获取application域中的username: ${application.username} 获取sessio ...
- 「题解」CF1468M Similar Sets
本文将同步发布于: 洛谷博客: csdn: 博客园: 简书. 题目 题目链接:洛谷.CF1468M. 题意简述 给定 \(n\) 个集合 \(S_{1\sim n}\),问是否存在 \(i,j\) 满 ...
- sql:group by和 max
通过group by,having,max实现查询出每组里指定列中最大的内容 例如:我需要实现的功能是 获取每个模块中点击量最大的内容(表中有许多内容,内容里) 我写的查询语句如下 查询结果如下: 然 ...
- 代码生成器:IDEA 强大的 Live Templates
前言 Java 开发过程经常需要编写有固定格式的代码,例如说声明一个私有变量,logger或者bean等等.对于这种小范围的代码生成,我们可以利用 IDEA 提供的 Live Templates功能. ...
- Spring Boot下的一种导出CSV文件的代码框架
1.前言 CSV,逗号分隔值(Comma-Separated Values),即为逗号分隔的文本文件.如果值中含有逗号.换行符.制表符(Tab).单引号及双引号,则需要用双引号括起来:如果值中包含 ...
- cos中的文件结构(DF/EF/MF/FID/AID/SFI..)
转载自:https://blog.csdn.net/Enjoy_endless/article/details/75108349 刚开始接触CPU卡的时候,对于各种文件.应用的定义容易模糊不清,通常不 ...
- ceph-csi源码分析(2)-组件启动参数分析
更多ceph-csi其他源码分析,请查看下面这篇博文:kubernetes ceph-csi分析目录导航 ceph-csi源码分析(2)-组件启动参数分析 ceph-csi组件的源码分析分为五部分: ...