如何在Linux系统中使用 envsubst 命令替换环境变量?

news2025/1/4 9:20:36

在Linux系统中,环境变量是非常常见的一种机制,它们被用于存储重要的系统信息,比如用户的登录名、路径等等。当在脚本中需要使用这些变量时,可以使用envsubst命令,该命令可以将环境变量的值替换到文本文件中。

本文将介绍如何使用envsubst命令替换环境变量。

环境变量的定义

在Linux系统中,可以通过export命令定义环境变量,如下所示:

export MY_VAR=my_value

在上面的例子中,将MY_VAR设置为my_value,它可以在shell脚本和其他命令中使用。

使用envsubst替换环境变量

现在,我们假设我们有一个文件,其中包含了一些需要替换为环境变量的值。这个文件可以是一个模板文件,其中包含了一些标记,比如${MY_VAR},这些标记将被替换为实际的环境变量的值。

我们可以使用envsubst命令将环境变量的值替换到文件中。例如,我们有以下文件:

Hello ${USER}, welcome to ${HOME} directory.

我们可以使用以下命令将 U S E R 和 {USER}和 USER{HOME}替换为实际的环境变量的值:

envsubst < file.txt > newfile.txt

执行完上述命令后,新的文件newfile.txt将包含以下内容:

Hello username, welcome to /home/username directory.

注意:在执行envsubst命令之前,一定要确保已经定义了所有需要替换的环境变量。

使用多个环境变量替换

当我们需要使用多个环境变量替换时,可以将它们都放在一个括号内,使用$来引用它们,例如:

export MY_NAME="John"
export MY_AGE="30"
envsubst < file.txt > newfile.txt

如果file.txt中包含以下内容:

My name is $MY_NAME and I am $MY_AGE years old.

则newfile.txt将包含以下内容:

My name is John and I am 30 years old.

在脚本中使用envsubst命令

在脚本中使用envsubst命令也非常简单,只需要将需要替换的文本保存在变量中,然后使用envsubst命令将变量中的值替换到目标文件中即可。

以下是一个简单的示例:

#!/bin/bash

MY_NAME="John"
MY_AGE="30"

text="My name is \$MY_NAME and I am \$MY_AGE years old."
echo $text | envsubst > newfile.txt

执行上述脚本后,将会在当前目录下创建一个新文件newfile.txt,它包含以下内容:

My name is John and I am 30 years old.

结论

使用envsubst命使用envsubst命令可以方便地将环境变量的值替换到文本文件中,这对于编写脚本和配置文件等非常有用。但是需要注意,当使用envsubst命令时,一定要确保已经定义了所有需要替换的环境变量,否则替换结果可能不正确。

除了envsubst命令,还有一些其他的命令可以用于处理环境变量,例如:

  • echo命令:可以用于输出环境变量的值。
  • printenv命令:可以用于打印所有环境变量的值。
  • set命令:可以用于设置和查看shell中的变量和环境变量。

总的来说,掌握环境变量的使用和管理对于Linux系统的管理和编程都是非常重要的。

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

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

相关文章

低静态电流-汽车电池反向保护系统的方法

低静态电流-汽车电池反向保护系统的方法 背景 车辆中电子电路数量不断增加&#xff0c;使得需要消耗的电池电量也随之大幅增长。为了支持遥控免钥进入和安全等功能&#xff0c;即使在汽车停车或熄火时&#xff0c;电池也要持续供电。 由于所有车辆都使用有限的电池供电&…

三轴XYZ平台生成gcode文件

1. 生成gcode坐标文件 gcode文件中保存的是需要绘制图形的路径信息&#xff0c;这里我们采用开源矢量图形编辑软件 Inkscape并通过Unicorn G-Code插件来生成 gcode坐标文件。 将软件资料包\Inkscape.rar 压缩文件解压到电脑上任意磁盘&#xff0c;软件内已安装 Unicorn G-Code插…

【花雕学AI】深度挖掘ChatGPT角色扮演的一个案例—CHARACTER play : 莎士比亚

CHARACTER play : 莎士比亚 : 52岁&#xff0c;男性&#xff0c;剧作家&#xff0c;诗人&#xff0c;喜欢文学&#xff0c;戏剧&#xff0c;爱情 : 1、问他为什么写《罗密欧与朱丽叶》 AI: 你好&#xff0c;我是莎士比亚&#xff0c;一位英国的剧作家和诗人。我很高兴你对我的…

【论文速览】图像分割领域的通用大模型SegGPT - Segmenting Everything in Context

文章目录研究背景解决思路PainterSegGPT实验效果&#xff08;部分&#xff09;思考参考资料代码地址&#xff1a;https://github.com/baaivision/Painter Demo地址&#xff1a;https://huggingface.co/spaces/BAAI/SegGPT 研究背景 图像分割一直是计算机视觉领域的一项基础研究…

Free container identify , CIMCAI container detect cloud service

集装箱箱号识别API免费&#xff0c;中国上海人工智能企业CIMCAI飞瞳引擎™集装箱人工智能平台全球近4千企业用户&#xff0c;全球领先的飞瞳引擎™AI集装箱识别云服务&#xff0c;集装箱残损识别箱况检测缺陷检验&#xff0c;小程序拍照检测或支持API接口二次开发&#xff0c;应…

数据结构初阶(算法的复杂度 + 包装类 + 泛型)

文章目录一、算法复杂度1. 算法效率2. 时间复杂度&#xff08;1&#xff09; O的渐进表示法3. 空间复杂度二、包装2.1 为什么会出现包装2.2 分类2.3 装箱和拆箱&#xff08;1&#xff09;装箱/装包&#xff08;2&#xff09;拆箱/拆箱三、泛型3.1 泛型的基本概念3.2 泛型的使用…

2023 年 3 月 GameFi 月度报告

作者&#xff1a;danielfootprint.network 数据来源&#xff1a;Monthly GameFi Report 三月的 GameFi 世界相对沉寂&#xff0c;没有重大的消息公开&#xff0c;没有亮眼的游戏出现&#xff0c;也没有死亡螺旋的发生。 GameFi 领域的重要名字 Splinterlands 和 Hive 开始面…

Redis一主二从搭建

Redis一主二从环境搭建 一主二从 准备工作 安装VMWare 下载镜像 创建下面的目录 Redis-Cluster master mastervmdk slave00 slave00vmdk slave01 slave00vmdk VMWare中安装CentOS7 自定义(高级) 默认 安装程序光盘映像文件 命名虚拟机&#xff0c;选择我们刚才创建的…

ASEMI代理ADAU1961WBCPZ-R7原装ADI车规级ADAU1961WBCPZ-R7

编辑&#xff1a;ll ASEMI代理ADAU1961WBCPZ-R7原装ADI车规级ADAU1961WBCPZ-R7 型号&#xff1a;ADAU1961WBCPZ-R7 品牌&#xff1a;ADI/亚德诺 封装&#xff1a;LFCSP-32 批号&#xff1a;2023 引脚数量&#xff1a;32 安装类型&#xff1a;表面贴装型 ADAU1961WBCPZ-…

通过简单demo让你秒懂Python的编译和执行全过程

基本说明 python 是一种解释型的编程语言&#xff0c;所以不像编译型语言那样需要显式的编译过程。然而&#xff0c;在 Python 代码执行之前&#xff0c;它需要被解释器转换成字节码&#xff0c;这个过程就是 Python 的编译过程。 DEMO演示讲解 假设我们有以下 Python 代码&…

常见安全设备

文章目录前言安全厂商安全设备种类拓扑图防火墙IDSIPSwaf上网行为管理器数据库审计系统全流量设备蜜罐态势感知前言 最近在了解安全设备的基本原理&#xff0c;简单做一下笔记。 安全厂商 深信服、浪潮、奇安信、绿盟、山石网科、启明星辰、安恒、360、新华3 安全设备种类 …

【CSS】元素显示与隐藏 ( display 隐藏对象 | visibility 隐藏对象 | overflow 隐藏对象 )

文章目录一、元素的显示与隐藏二、display 隐藏对象1、display 隐藏对象语法说明2、display 显示元素代码示例3、display 隐藏元素代码示例三、visibility 隐藏对象1、visibility 隐藏对象语法说明2、visibility 显示对象代码示例3、visibility 隐藏对象代码示例四、overflow 隐…

大数据项目实战之数据仓库:电商数据仓库系统——第5章 数据仓库设计

第5章 数据仓库设计 5.1 数据仓库分层规划 优秀可靠的数仓体系&#xff0c;需要良好的数据分层结构。合理的分层&#xff0c;能够使数据体系更加清晰&#xff0c;使复杂问题得以简化。以下是该项目的分层规划。 5.2 数据仓库构建流程 以下是构建数据仓库的完整流程。 5.2.1 …

在unreal中的基于波叠加的波浪水面材质原理和制作

关于水的渲染模型 如何渲染出真实的水体和模拟&#xff0c;是图形学&#xff0c;游戏开发乃至仿真领域很有意思的一件事 记得小时候玩《Command & Conquer: Red Alert 3》&#xff0c;被当时的水面效果深深震撼&#xff0c;作为一款2008年出的游戏&#xff0c;现在想起它…

RK3399平台开发系列讲解(基础篇)POSIX 定时器

🚀返回专栏总目录 文章目录 一、clockid二、sigevent三、timerid四、flags五、 value & old_value六、POSIX 定时器的优势沉淀、分享、成长,让自己和他人都能有所收获!😄 📢为了克服传统定时器的局限性,POSIX 标准组织设计了新的计时器接口和规范,使它们能提供更…

Java安全学习之RMI

最近在看Phith0n师傅的知识星球的Java安全漫谈系列&#xff0c;随手记下笔记 RMI全称远程方法调用(Remote Method Invocation)。这是允许驻留在一个系统(JVM)中的对象调用在另一个JVM上运行的对象的一种机制&#xff0c;能够远程调用远程对象的方法。 RMI通信过程、原理 我们首…

SSM实战-外卖项目-06-用户地址簿功能、菜品展示、购物车、下单(一个业务涉及5张表)

文章目录外卖项目-第六天课程内容1. 用户地址簿功能1.1 需求分析1.2 数据模型1.3 导入功能代码1.4 功能测试 &#xff08;其实需求分析里我就自己写了一份代码&#xff0c;而且测试过了&#xff0c;下面再测试了一遍&#xff09;2. 菜品展示2.1 需求分析2.2 前端页面分析2.3 代…

关于二叉树访问顺序的选择题

第一题&#xff1a; 从题目中我们可以得出这是棵完全二叉树&#xff08;最后一列不满&#xff0c;且连续&#xff09;&#xff0c;层次顺序。 我们可以推出树的形状&#xff1a; 我们现根据层次遍历的性质画出出栈的图&#xff1a; ABCDEFGH 最开始是A所以第一个位置为A&…

STC单片机波特率初值计算以及通用串口配置程序

STC单片机波特率初值计算以及通用串口配置程序&#x1f516;这里以STC15手册上的数据展开。&#x1f530;串口模式一&#xff1a;可变波特率8位数据方式。以为最为常用的配置模式。&#x1f33f;定时器1模式0:16位定时器计数器&#x1f33f;定时器1模式2:8位定时器计数器 ✨当然…

linux高级存储功能

高级存储功能 1、Stratis管理分层存储 通过Stratis&#xff0c;便捷的使用精简配置&#xff08;thin provisioning&#xff09;&#xff0c;快照&#xff08;snapshots&#xff09;和基于池&#xff08;pool-based&#xff09;的管理和监控的等高级存储功能。 &#xff08;1&a…