亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

shell讀取配置文件的方式sed命令詳解

 更新時間:2023年04月14日 14:19:04   作者:霜學  
在編寫啟動腳本時,涉及到讀取配置文件,特地記錄下shell腳本讀取啟動文件的方式,這篇文章主要介紹了shell讀取配置文件-sed命令,需要的朋友可以參考下

在編寫啟動腳本時,涉及到讀取配置文件,特地記錄下shell腳本讀取啟動文件的方式。主要提供兩種格式的讀取方式,方式一配置文件采用“[]”進行分區(qū),方式二配置文件中需要有唯一的配置項名稱。

配置文件格式如下:

# cat -n config.ini
 #MYSQL配置項
 [MYSQL]
 DB_HOST=192.168.0.1
 DB_PORT=3306
 DB_USER=root
 DB_PASSWD=mysql1234
 DB_NAME=system_manager1

 #MYSQL_1配置項
 [MYSQL_1]
 MYSQL_DB_HOST=192.168.0.2
 MYSQL_DB_PORT=2200
 MYSQL_DB_USER=root
 MYSQL_DB_PASSWD=mysql123456
 MYSQL_DB_NAME=bigdata1
 MYSQL_INIT_SQL='set slave;stop backup;'

 #REDIS配置項
 [REDIS]
 DB_HOST=192.168.0.1
 DB_PORT=6379
 DB_ID=4
 DB_PASSWD=redis1234

方式一:先試使用grep獲取配置項的開始行、結束行。

# grep -n -E '^\[' config.ini |grep -A 1 "\[MYSQL\]"|awk -F ':' '{print $1}'|xargs
2 10

# grep -n -E '^\[' config.ini |grep -A 1 "\[REDIS\]"|awk -F ':' '{print $1}'|xargs
19

在使用sed根據(jù)開始行、結束行獲取實際配置

# sed -n "2,10 s/DB_HOST=//p" config.ini
192.168.0.1

# sed -n "19,$ s/DB_PORT=//p" config.ini
6379

方式二:使用正則匹配唯一的配置項名稱,并顯示實際配置

# sed -r -n 's/(^MYSQL_INIT_SQL=)(.*)$/\2/p' config.ini
'set slave;stop backup;'

# sed -r -n 's/(^MYSQL_DB_HOST=)(.*)$/\2/p' config.ini
192.168.0.2

完整腳本如下:

# cat config.sh
#!/bin/bash
set -e

exit_script(){
   exit 1
}

if [ "$#" = 0 ]; then
    echo "參數(shù)錯誤,命令格式為:    ./config.sh configfile"
    exit_script
else
    configPath=$1
fi

function get_line_num(){
    local configKey=$1
    grep -n -E '^\[' ${configPath} |grep -A 1 "\[${configKey}\]"|awk -F ':' '{print $1}'|xargs
}

function get_config(){
    #local configPath=$1
    local configKey=$1
    local configName=$2
    local line_num=$(get_line_num $configKey)
    local startLine=$(echo $line_num |awk '{print $1}')
    local endLine=$(echo $line_num|awk '{print $2}')
    if [ ${endLine} ];then
        sed -n "${startLine},${endLine} s/${configName}=//p" ${configPath}
    else
        sed -n "${startLine},$ s/${configName}=//p" ${configPath}
    fi
}

if [ -f $configPath ];then
    MYSQL_DB_HOST=$(get_config MYSQL DB_HOST)
else
    echo ${configPath}"文件不存在,請檢查配置文件是否存在"
    exit_script
fi
MYSQL_DB_PASSWD=$(get_config MYSQL DB_PASSWD)
MYSQL_DB_USER=$(get_config MYSQL DB_USER)
REDIS_DB_HOST=$(get_config REDIS DB_HOST)
REDIS_DB_PASSWD=$(get_config REDIS DB_PASSWD)

MYSQL_DB_HOST=$(sed -r -n 's/(^MYSQL_DB_HOST=)(.*)$/\2/p' $configPath)
MYSQL_DB_NAME=$(sed -r -n 's/(^MYSQL_DB_NAME=)(.*)$/\2/p' $configPath)
INIT_SQL=$(sed -r -n 's/(^MYSQL_INIT_SQL=)(.*)$/\2/p' $configPath)

echo "MYSQL_DB_HOST="${MYSQL_DB_HOST}
echo "MYSQL_DB_PASSWD="${MYSQL_DB_PASSWD}
echo "MYSQL_DB_USER="${MYSQL_DB_USER}
echo "REDIS_DB_HOST="${REDIS_DB_HOST}
echo "REDIS_DB_PASSWD="${REDIS_DB_PASSWD}

echo "-----------------分割線-------------"
echo "使用sed讀取配置:MYSQL_DB_HOST="${MYSQL_DB_HOST}
echo "使用sed讀取配置:MYSQL_DB_NAME="${MYSQL_DB_NAME}
echo "使用sed讀取配置:MYSQL_INIT_SQL="${INIT_SQL}

實際執(zhí)行結果:

# ./config.sh config.i
config.i文件不存在,請檢查配置文件是否存在

# ./config.sh config.ini
MYSQL_DB_HOST=192.168.0.2
MYSQL_DB_PASSWD=mysql1234
MYSQL_DB_USER=root
REDIS_DB_HOST=192.168.0.1
REDIS_DB_PASSWD=redis1234
-----------------分割線-------------
使用sed讀取配置:MYSQL_DB_HOST=192.168.0.2
使用sed讀取配置:MYSQL_DB_NAME=bigdata1
使用sed讀取配置:MYSQL_INIT_SQL='set slave;stop backup;'

到此這篇關于shell讀取配置文件-sed命令的文章就介紹到這了,更多相關shell讀取配置文件內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 獲取站點的各類響應時間(dns解析時間,響應時間,傳輸時間)

    獲取站點的各類響應時間(dns解析時間,響應時間,傳輸時間)

    有時候為了測試網絡情況,需要返回每個階段的耗時時間,比如DNS解析耗時,建立連接所消耗的時間,從建立連接到準備傳輸所使用的時間,從建立連接到傳輸開始所使用的時間,整個過程耗時,下載的數(shù)據(jù)量,下載速度,上傳數(shù)據(jù)量,上傳速度等等
    2014-03-03
  • Shell腳本模擬多線程功能分享

    Shell腳本模擬多線程功能分享

    這篇文章主要介紹了Shell腳本模擬多線程功能分享,本文直接給出實現(xiàn)代碼,代碼中有詳細的注釋,需要的朋友可以參考下
    2014-11-11
  • shell批量curl接口腳本的簡單實現(xiàn)方法

    shell批量curl接口腳本的簡單實現(xiàn)方法

    這篇文章主要跟大家介紹了關于shell批量curl接口腳本的簡單實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家學習或者使用shell具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-08-08
  • linux 中grep 匹配制表符 和 換行符的命令

    linux 中grep 匹配制表符 和 換行符的命令

    這篇文章主要介紹了linux 中grep 匹配制表符 和 換行符的命令,需要的朋友可以參考下
    2018-07-07
  • awk統(tǒng)計文件中某關鍵詞出現(xiàn)次數(shù)的命令

    awk統(tǒng)計文件中某關鍵詞出現(xiàn)次數(shù)的命令

    awk統(tǒng)計文件中某關鍵詞出現(xiàn)的次數(shù),供朋友們學習參考
    2013-02-02
  • 詳解shell中腳本參數(shù)傳遞的兩種方式

    詳解shell中腳本參數(shù)傳遞的兩種方式

    這篇文章主要介紹了詳解shell中腳本參數(shù)傳遞的兩種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10
  • Linux shell命令統(tǒng)計某列去重后的值

    Linux shell命令統(tǒng)計某列去重后的值

    今天小編就為大家分享一篇關于Linux shell命令統(tǒng)計某列去重后的值,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • linux命令返回值的含義解析

    linux命令返回值的含義解析

    這篇文章主要介紹了linux命令返回值的含義,linux命令執(zhí)行后無論成功與否都有一個返回值,如果為 0,則表示命令執(zhí)行成功,其它值則表示錯誤,具體代碼及含義介紹大家通過本文學習下吧
    2018-06-06
  • 詳解shell 遍歷文件夾內所有文件并打印絕對路徑

    詳解shell 遍歷文件夾內所有文件并打印絕對路徑

    本篇文章主要介紹了shell 遍歷文件夾內所有文件并打印絕對路徑,具有一定的參考價值,有興趣的可以了解一下。
    2017-01-01
  • 消耗CPU資源的shell腳本

    消耗CPU資源的shell腳本

    使用死循環(huán)消耗CPU資源,如果服務器是有多顆CPU,可以選擇消耗多少顆CPU的資源
    2013-08-08

最新評論