linux - 防止重复的环境变量
问题描述
我正在尝试将环境变量导出到 /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
推荐阅读
- html - MediaRecorder 切换视频轨道
- docker - 如何使用 docker 实现零成本和安全部署选项?
- python - 如何在 pandas 中将多列转换为单独的行/值?
- java - 警报对话框 dispatchTouchEvent
- regex - 关于如何在 Nginx 位置块部分使用正则表达式的指南?
- azure - 在 Azure DevOps 中,如何在组织级别而不是项目级别创建 Azure 服务连接?
- javascript - 在不删除逗号的情况下将 JSON 响应拆分为新行
- android - 无法导入包android.support.v7.app(错误:不存在)
- ruby-on-rails - 在 Rails 5(以及带有经典自动加载器的 6)中包含 `lib/` 文件的推荐方法是什么?
- sql - 优先于表中的特定值