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 变量引用的更多相关文章

  1. 2.8 补充:shell变量引用方式

    一 变量   变量:本质上是程序中保存用户数据的一块内存空间,变量名就是内存空间地址.   Shell中:变量可由字母数字和下划线组成,以字母或下划线开头.   命名:PATH=/sbin       ...

  2. Shell 变量引用实例

    初学 Shell 编程时,对变量各种引用使用不太熟悉,走了很多弯路,本文记录变量引用的一些用法,希望对大家有所帮助. 引用 引用指将字符串用引用符号引起来,以防止特殊字符被 shell 脚本解释为其他 ...

  3. shell变量引用

    var="www.sina.com.cn" echo ${var#*.} #sina.com.cn 从前向后删 echo ${var##*.} #.cn 贪婪模式从前向后删 ech ...

  4. 小鸟初学Shell编程(七)变量引用及作用范围

    变量引用 那么定义好变量,如何打印变量的值呢?举例下变量引用的方式. ${变量名}称作为对变量的引用 echo ${变量名}查看变量的值 ${变量名}在部分情况下可以省略成 $变量名 [root@li ...

  5. 使用expect实现自动交互,shell命令行自动输入,脚本自动化,变量引用,expect spawn执行带引号命令,expect 变量为空,不生效,不能匹配通配符*,函数,数组

    背景 有需求,在允许命令或者脚本跳出交互行,需要进行内容输入,但需要人手动输入,不是很方便,此时可以通过expect来实现自动互动交互. expect是一个自动交互功能的工具,可以满足代替我们实际工作 ...

  6. awk中引用shell变量的方法

    1.通过命令行参数定义变量时引用: awk -v awk变量名= shell变量名 #!/bin/bash var4bash=test awk -v var4awk="$var4bash&q ...

  7. shell变量详解

    1 shell变量基础 shell变量是一种很"弱"的变量,默认情况下,一个变量保存一个串,shell不关心这个串是什么含义.所以若要进行数学运算,必须使用一些命令例如let.de ...

  8. 三、Shell变量类型和运算符

    一.Shell变量的应用 1.Shell变量的种类     ·用户自定义变量:由用户自己定义.修改和使用     ·预定义变量:Bash预定义的特殊变量,不能直接修改     ·位置变量:通过命令行给 ...

  9. Shell入门教程:Shell变量

    变量 是一种很“弱”的变量,默认情况下,一个变量保存一个串,Shell不关心这个串是什么含义.所以若要进行数学运算,必须使用一些命令例如 let.declare.expr.双括号等. Shell变量可 ...

随机推荐

  1. 使用vue-cli 来创建vue项目

    前置条件 需要安装node环境 安装vue\cli工具 vue\cli官网 传送门 vue-cli 安装node.js nodejs中文网 点击之后会发现这个界面 可以点击下载或者选择其他版本的包,尽 ...

  2. ARM CPU自动调度神经网络

    ARM CPU自动调度神经网络 对特定设备和工作负载进行自动调度,对于获得最佳性能至关重要.通过RPC使用自动调度器为ARM CPU调度整个神经网络. 为了自动调度神经网络,将网络划分为小的子图,进行 ...

  3. Java重载方法如何竞争

    突然想起以前遇到的一道笔试题,题目大概是这样子的 // 父类 public class Father { } // 子类 public class Son extends Father { } // ...

  4. 单点突破:MySQL之索引

    前言 开发环境:MySQL5.7.31 什么是索引 在MySQL中,索引(Index)是帮助高效获取数据的数据结构. 我们可以将数据库理解为一本书,数据库中的各个数据列(column)就是目录中的章节 ...

  5. parted(分区工具)

    要支持大容量(18EB),需改用  gpt 分区模式可以有128个主分区 [root@server0 /]# lsblk [root@server0 /]# parted /dev/vdb (part ...

  6. Centos7拓展磁盘(逻辑增加)

    目录 第一步 第二步 第三步 以107.4G的Centos操作系统拓展20G磁盘空间,并将此20G磁盘空间分别分配给/home为例. 第一步 首先查看操作系统分区状况和磁盘占用情况.发现磁盘sda空间 ...

  7. 【NX二次开发】Block UI 表达式

    属性说明 常规         类型 描述     BlockID     String 控件ID     Enable     Logical 是否可操作     Group     Logical ...

  8. 在VScode 中使用RT-Thread Studio初体验

    前言 工欲善其事,必先利其器,VScode是什么东东,想必大家都非常熟悉了,丰富的插件,有好的开发界面,是很多程序开发者的不二之选,RT-Thread竟然也开发了Vscode插件,真的是非常的nice ...

  9. [源码解析] 深度学习分布式训练框架 horovod (6) --- 后台线程架构

    [源码解析] 深度学习分布式训练框架 horovod (6) --- 后台线程架构 目录 [源码解析] 深度学习分布式训练框架 horovod (6) --- 后台线程架构 0x00 摘要 0x01 ...

  10. Mysql优化_第十三篇(HashJoin篇)

    Mysql优化_第十三篇(HashJoin篇) 目录 Mysql优化_第十三篇(HashJoin篇) 1 适用场景 纯等值查询,不能使用索引 等值查询,使用到索引 多个join条件中至少包含一个等值查 ...