鍍金池/ 問答/Linux  HTML/ 如果我的environment-variable.ini變量跟環(huán)境變量不同,如何

如果我的environment-variable.ini變量跟環(huán)境變量不同,如何用shell腳本修改?

1、我的environment-variable.ini文件內(nèi)的內(nèi)容是

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

我的環(huán)境變量是

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中所設(shè)置的變量跟我的環(huán)境變量相同就不改變環(huán)境變量,如果不相同的話,將環(huán)境變量修改成environment-variable.ini中的變量

2、這段代碼怎么優(yōu)化

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
回答
編輯回答
無標(biāo)題
假設(shè)你的environment-variable.ini內(nèi)容是這樣的
UNIVER_PROJECR_PORT='79000000'
我寫了一個,能實(shí)現(xiàn),你可以看看,應(yīng)該有更好的
#!/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 '不一致,需要修改成配置文件中的參數(shù)'
    sed -i '/UNIVER_PROJECR_PORT/d' /etc/profile       #刪除原有的
    echo "export UNIVER_PROJECR_PORT="$UNIVER_PROJECR_PORT>>/etc/profile  #添加新的
fi

source /etc/profile
2018年6月6日 15:57
編輯回答
檸檬藍(lán)

實(shí)現(xiàn)其實(shí)不重要,實(shí)在太簡單了,我談下我的看法: 慎重修改/etc/。為啥?新手不了解,對這個目錄沒有敬畏之心,太容易把整個系統(tǒng)搞掛了,這個目錄的文件一旦改壞了,影響整個系統(tǒng),嚴(yán)重的甚至整個系統(tǒng)全掛無法啟動。比如錯誤的對整個/etc/使用了chmod/chown -R xxx /etc/

再者,我再次強(qiáng)調(diào)一下,不要亂改/etc/profile,這個文件根本不是你想的那樣,而且可能改了也不符合你的預(yù)期(建議自己閱讀shell的啟動過程,很多shell和系統(tǒng)在交互式模式下可能不加載這個文件)。不止這個,任何shell默認(rèn)的/etc/*rc配置都不應(yīng)該亂改。先從思想上糾正一下你的想法。限于篇幅我不說詳細(xì)原因了,看的資料多了你自然有感悟,亂改/etc/是新手的做法。

那怎么做?環(huán)境變量盡可能不要影響其他,實(shí)在要改,也不要去改/etc/的,改~/.*rc配置,只影響當(dāng)前用戶,即使改壞不會讓整個系統(tǒng)掛掉,而且已與修復(fù)。

環(huán)境變量的作用范圍應(yīng)該限制盡可能小,小到限制到某個程序,而不是所有不相關(guān)的程序都要受到影響,懂了吧?所以對于腳本而言,直接把需要的變量寫到自己的腳本初始化中,不要受到外部環(huán)境變量的干擾,也不要去干擾外部環(huán)境變量。服務(wù)的環(huán)境變量由服務(wù)的啟動腳本進(jìn)行初始化,任何時(shí)候不要亂改環(huán)境變量,更不能把你的環(huán)境變量亂寫到/etc/下去,一旦搞壞后果嚴(yán)重

2017年10月24日 14:48