首页 > 解决方案 > 防止重复的环境变量

问题描述

我正在尝试将环境变量导出到 /etc/profile.d。shell脚本如下

echo -e "export var1=abc ">>/etc/profile.d/setenv.sh

var1 将是用户输入,每次输入时我都需要更新环境变量。但是当我们多次运行上面的 shell 脚本时,上面的代码会导致在 /etc/profile.d/setenv.sh 中附加重复的行。有没有办法我们可以防止这种情况。

标签: linuxbashshellscriptingenvironment-variables

解决方案


sed -Ei 's/^(export var1=).*/\1abc/' file

或者

perl -i -lpe 's/^export var1=\K.*/abc/' file

然而,那些只修改现有值。如果没有找到就插入,那么我们需要更多的逻辑:

gawk -i inplace '
    BEGIN {FS = OFS = "="}
    $1 == "export var1" {$2 = "abc"; found = 1}
    {print}
    END {if (!found) print "export var1=abc"}
' file

推荐阅读