【Linux】“echo $变量“ 命令打印变量值的底层原理




在这里插入图片描述



在 shell 中,echo $变量 命令的工作原理涉及几个关键步骤,主要是由 shell 解释器来处理变量的查找和替换。以下是详细的过程:

变量展开的过程顺序

变量引用:

在命令行中,变量通常以 $variable_name 或 ${variable_name} 的形式引用。这个引用告诉 shell 解释器需要查找并替换这个变量。

变量查找:

shell 解释器首先会在当前作用域中查找本地变量。如果找不到,它会继续查找环境变量(即全局变量)。本地变量的优先级高于环境变量,因此如果有同名的本地变量,shell 会优先使用本地变量的值。

变量替换:

一旦找到变量,shell 解释器会将变量引用替换为其对应的值。例如,如果变量 name 的值是 Alice,那么 echo $name 会被替换为 echo Alice。

命令执行:

替换后的命令行(如 echo Alice)随后被传递给 echo 命令进行执行。echo 命令将打印出替换后的值,即 Alice。


示例

假设我们有如下的 shell 脚本:

name="Alice"
echo "Hello, $name!"

执行过程如下:

  1. 变量引用:识别到 $name。
  2. 变量查找:在当前作用域中查找 name,找到其值为 Alice。
  3. 变量替换:将 echo “Hello,
    $name!” 替换为 echo “Hello, Alice!”。
    命令执行:执行 echo “Hello, Alice!”,输出结果为
    Hello, Alice!。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/56840.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用Shell脚本对Java应用等服务进行启停控制(支持批量)

通过shell脚本对Java服务启停进行控制。支持单个服务和多个服务的 start、stop、status、restart。支持自定义启动命令。(不限于Java服务,适用于各类通过命令行启动的服务) 脚本名称为 runjar.sh , 底部提供源码。通过三部分进行说明:操作说明、维护自定义服务列表、脚本源…

搭建`mongodb`副本集-开启权限认证 mongo:7.0.5

搭建mongodb副本集-开启权限认证 mongo:7.0.5 1.5.1、创建文件 创建配置文件保存目录和数据保存目录 mkdir -p /data/mongodb/{/conf,/data,/logs}生成和设置权限 这个文件一定要在一个服务里面生成然后复制到其它服务器,所有服务器的这个key一定是相同的。 op…

C语言 | Leetcode C语言题解之第480题滑动窗口中位数

题目: 题解: struct Heap {int* heap;int heapSize;int realSize;bool (*cmp)(int, int); };void init(struct Heap* obj, int n, bool (*cmp)(int, int)) {obj->heap malloc(sizeof(int) * (n 1));obj->heapSize 0;obj->cmp cmp; }bool c…

第二十二篇——菲欧几何:相对论的数学基础是什么?

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么? 四、总结五、升华 一、背景介绍 对于几何的几个工具,让我再次感叹数学的伟大,逻辑…

国产大模型基础能力大比拼 - 计数:通义千文 vs 文心一言 vs 智谱 vs 讯飞-正经应用场景的 LLM 逻辑测试

在大语言模型(LLM)不断涌现的时代,如何评估这些国产大模型的逻辑推理能力,尤其是在处理基础计数问题上的表现,成为了一个备受关注的话题。随着越来越多的国产大模型进入市场,比较它们在不同任务中的表现尤为…

STM32笔记(1)GPIO之点亮LED

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 总结 第一步:先看原理图。PB0输出高电平是,LED1点亮。 初始化完成了两项工作: (1)从时钟上启动所用GPIO所在的总线&#xff1b…

Centos7 安装升级最新版Redis7.4.1

1. 前言 今天阿里云云盾检测出一个redis低版本的漏洞,需要升级到稳定高版本修复漏洞,升级过程遇到了一些坑,特记录分享给大家,原服务器默认yum源安装的gcc 是4.8.5 ,默认安装redis是 3.2.12(如下图): 2.升级GCC 升级新版redis需要更高级的gcc支持,这里我们就选择升级…

《计算机视觉》—— 换脸

效果如下: 完整代码: import cv2 import dlib import numpy as npJAW_POINTS list(range(0, 17)) RIGHT_BROW_POINTS list(range(17, 22)) LEFT_BROW_POINTS list(range(22, 27)) NOSE_POINTS list(range(27, 35)) RIGHT_EYE_POINTS list(range(36…

力扣 中等 82.删除排序链表中的重复元素 II

文章目录 题目介绍题解 题目介绍 题解 只需在83题基础上加一个while循环即可 class Solution {public ListNode deleteDuplicates(ListNode head) {ListNode dummy new ListNode(101, head);ListNode cur dummy;while (cur.next ! null && cur.next.next ! null) {…

【Linux】Anaconda下载安装配置Pytorch安装配置(保姆级)

目录 Anaconda下载 Anaconda安装 conda init conda --v Conda 配置 conda 环境创建 conda info --envs conda list Pytorch安装配置 检验安装情况 检验是否可以使用GPU Anaconda下载 可以通过两种途径完成Anaconda安装包的下载 途径一:本地windows下…

运算放大器的带宽

运算放大器(Op-Amp)的带宽是指放大器能够稳定放大信号而不发生增益衰减的最高频率范围。带宽通常定义为放大器增益下降3分贝(dB)时对应的频率,这个点也被称为-3dB点(下图中是蓝色方框圈出的点)。…

读数据工程之道:设计和构建健壮的数据系统13无服务器

1. 无服务器 1.1. 云供应商的一个大趋势是无服务器,允许开发人员和数据工程师无须在后台管理服务器即可运行应用程序 1.1.1. 无服务器快速将价值投入到其正确的用例 1.2. 无服务器真正开始流行是在2014年AWS Lambda全面投入使用…

C++ —— 类和对象

目录 介绍类和对象 一. 类和对象——类的定义 1.访问限定符 2.类域 作用操作符:: 3.对象大小 类的实例化 内存对齐规则 4.this指针 this指针会出现的问题 5.C语言结构体与C类对比 封装的本质 C类的优点 二 .类和对象——关于成员 1.类的默认成员函数 I.构造函数 构…

SpringBoot+Vue+Uniapp智能社区服务小程序系统(源码+lw+部署文档+讲解等)

项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念,提供了一套默认的配置,让开发者可以更专注于业务逻辑而不是配置文件。Spring Boot 通过自动化配置和约…

三菱FX3U-4AD模块怎样读出模拟量数据的?

关于使用FX3U-4AD读出模拟量数据时,所需的最低限度的程序,就此进行说明。读出模拟量数据的步骤如下所示: 1、确认单元号 从左侧的特殊功能单元/模块开始,依次分配单元号0~7。连接在FX3UC-32MT-LT(-2)可编程控制器上时&#xff0c…

ubuntu24.0离线安装Ollama和纯cpu版本以及对接Spring AI

文章目录 一.官网下载 0.3.13版本二.将文件包上传至ubuntu服务器三.下载安装脚本四.剔除GPU相关下载ROCM等,纯CPU运行脚本五.ollama常用命令六. 远程测试 七.对接spring AI 一.官网下载 0.3.13版本 ollama离线安装包下载地址 二.将文件包上传至ubuntu服务器 三.下…

电感电容谐振原理及Matlab仿真

一、电感电容谐振原理概述 电感电容谐振(LC谐振)是一种电路现象,它发生在电感器(L)和电容器(C)通过适当的方式连接时,电路中电流和电压之间形成共振。在这种共振状态下,…

计算机组成原理与系统结构——外部存储器

笔记内容及图片整理自XJTUSE “计算机组成原理与系统结构” 课程ppt,仅供学习交流使用,谢谢。 磁盘 磁盘是一个由非磁性材料构成的圆形盘片(称为基片),上面涂抹可磁化材料。传统的基片一直是铝制或铝合金的&#xff0…

基于SpringBoot+Vue+Uniapp汽车保养系统小程序的设计与实现

详细视频演示 请联系我获取更详细的演示视频 项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念,提供了一套默认的配置,让开发者可以更专注于业务逻辑而…

linux下使用VSCODE 调试python

文章目录 一、环境准备安装VS Code:安装Python: 二、环境测试创建Python文件:编写测试代码运行 Linux下使用VS Code调试Python 在Linux环境中进行Python开发时,一个高效、直观的调试工具是必不可少的。Visual Studio Code&#xf…