替换文件中声明的环境变量的值

时间:2019-08-21 12:44:58

标签: bash envsubst

有一个文件env.sh,它定义了环境变量:

$cat env.sh
export var1=1
export var2=2

我想用var1替换文件中3的值,这样

$cat env.sh
export var1=3
export var2=2

有没有办法在没有字符串/正则表达式匹配魔术的情况下做到这一点?

我读了很多关于envsubst的书,但是仍然无法弄清楚如何将其应用于任务。

2 个答案:

答案 0 :(得分:2)

脚本中没有正则表达式:

#!/bin/bash
source env.sh
export var1=3
declare -p var1 > env.sh
declare -p var2 >> env.sh

输出到env.sh:

declare -x var1="3"
declare -x var2="2"

declare -xexport的同义词。

答案 1 :(得分:2)

只需使用可编写脚本的编辑器,例如ed

$ cat env.sh
export var1=1
export var2=2
$ printf  '/var1=/s/=.*/var1=3/\nw\n' | ed env.sh
28
28
$ cat env.sh
export var1=3
export var2=2