我正在尝试将一个环境变量导出到/etc/profile.d中。shell脚本如下
echo -e "export var1=abc ">>/etc/profile.d/setenv.sh
var1将是一个用户输入,每次我输入时,我都需要更新环境变量。但是,当我们多次运行上面的shell脚本时,上面的代码会导致在/etc/profile.d/setenv.sh中追加重复的行。我们有办法防止这种情况发生吗。
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