如果我的environment-variable.ini变量跟环境变量不同,如何用shell脚本修改?

发布于 2022-09-07 20:17:58 字数 1367 浏览 25 评论 0

1、我的environment-variable.ini文件内的内容是

export UNIVER_USER_LOGIN='http://127.0.0.1/api/login'
export UNIVER_SEARCH_ORDINARY='http://127.0.0.1/api/search/common'
export UNIVER_SEARCH_LABEL='http://127.0.0.1/api/search/common'
export UNIVER_SEARCH_VIDEO='http://127.0.0.1/api/search/common'
export UNIVER_TASK_MANAGER='http://127.0.0.1/api/task/manager'
export UNIVER_PROJECR_URL='167.210.220.11'
export UNIVER_PROJECR_PORT=667777760011

我的环境变量是

export UNIVER_MONGO_URL='mongodb://10.10.0.49:27017'
export UNIVER_USER_LOGIN='http://demo.kube.univer/api/login'
export UNIVER_SEARCH_ORDINARY='http://demo.kube.univer/api/search/common'
export UNIVER_SEARCH_LABEL='http://127.0.0.1/api/search/common'
export UNIVER_SEARCH_VIDEO='http://127.0.0.1/api/search/common'
export UNIVER_TASK_MANAGER='http://127.0.0.1/api/task/manager'
export UNIVER_PROJECR_URL='67.110.220.11'
export UNIVER_PROJECR_PORT=6677

我希望用shell 脚本判断

如果我的environment-variable.ini中所设置的变量跟我的环境变量相同就不改变环境变量,如果不相同的话,将环境变量修改成environment-variable.ini中的变量

2、这段代码怎么优化

if [ $UNIVER_USER_LOGIN ]; then # 如果 UNIVER_USER_LOGIN 存在
    echo ${UNIVER_USER_LOGIN}
else
    # echo "export UNIVER_USER_LOGIN='xxx'" >> /etc/profile
    grep 'UNIVER_USER_LOGIN' environment-variable.ini >> /etc/profile
fi

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

原野 2022-09-14 20:17:58
假设你的environment-variable.ini内容是这样的
UNIVER_PROJECR_PORT='79000000'
我写了一个,能实现,你可以看看,应该有更好的
#!/bin/bash
while read line;do  
    eval "$line"
done < environment-variable.ini
echo $UNIVER_PROJECR_PORT

if [ $UNIVER_PROJECR_PORT == $(sed '/^UNIVER_PROJECR_PORT=/!d;s/.*=//' /etc/profile) ];then
    echo '一致'
else
    echo '不一致,需要修改成配置文件中的参数'
    sed -i '/UNIVER_PROJECR_PORT/d' /etc/profile       #删除原有的
    echo "export UNIVER_PROJECR_PORT="$UNIVER_PROJECR_PORT>>/etc/profile  #添加新的
fi

source /etc/profile
鲜血染红嫁衣 2022-09-14 20:17:58

实现其实不重要,实在太简单了,我谈下我的看法: 慎重修改/etc/。为啥?新手不了解,对这个目录没有敬畏之心,太容易把整个系统搞挂了,这个目录的文件一旦改坏了,影响整个系统,严重的甚至整个系统全挂无法启动。比如错误的对整个/etc/使用了chmod/chown -R xxx /etc/

再者,我再次强调一下,不要乱改/etc/profile,这个文件根本不是你想的那样,而且可能改了也不符合你的预期(建议自己阅读shell的启动过程,很多shell和系统在交互式模式下可能不加载这个文件)。不止这个,任何shell默认的/etc/*rc配置都不应该乱改。先从思想上纠正一下你的想法。限于篇幅我不说详细原因了,看的资料多了你自然有感悟,乱改/etc/是新手的做法。

那怎么做?环境变量尽可能不要影响其他,实在要改,也不要去改/etc/的,改~/.*rc配置,只影响当前用户,即使改坏不会让整个系统挂掉,而且已与修复。

环境变量的作用范围应该限制尽可能小,小到限制到某个程序,而不是所有不相关的程序都要受到影响,懂了吧?所以对于脚本而言,直接把需要的变量写到自己的脚本初始化中,不要受到外部环境变量的干扰,也不要去干扰外部环境变量。服务的环境变量由服务的启动脚本进行初始化,任何时候不要乱改环境变量,更不能把你的环境变量乱写到/etc/下去,一旦搞坏后果严重

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文