欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Shell腳本讀取ini配置文件的實現(xiàn)方法-創(chuàng)新互聯(lián)

本篇內(nèi)容介紹了“Shell腳本讀取ini配置文件的實現(xiàn)方法”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

創(chuàng)新互聯(lián)建站于2013年開始,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目做網(wǎng)站、成都做網(wǎng)站網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元劍閣做網(wǎng)站,已為上家服務(wù),為劍閣各地企業(yè)和個人服務(wù),聯(lián)系電話:028-86922220

一、簡單版

參考stackoverflow的例子,改了一個出來:

代碼如下:


while IFS='= ' read var val
do
    if [[ $var == \[*] ]]
    then
        section=$(echo $var | sed 's/^\[\(.*\)\]$/\1/')
    elif [[ $val ]]
    then
        if [ -z $section ];then
            declare "${var}=$val"
        else
            declare "${section}.${var}=$val"
        fi 
    fi 
done < config.ini


使用的時候:


代碼如下:


${section.key}


就可以讀到變量啦。

二、復(fù)雜版

代碼如下:


[comon]
ids=com1,com2,com3
files=profilefile
 
 
[com1]
key="name"
file="test"
 
[com2]
key="name1"
file="test"
 
[com3]
key="name2"
file="test"


取[com1]的key值我查了下,還好在ChinaUnix里面查到了命令(貌似一位叫wintty兄寫的):


代碼如下:

awk -F '=' '/\[com1\]/{a=1}a==1&&$1~/key/{print $2;exit}' config.ini


這樣就簡單取到值了。
查了下命令終于明白,命令分為兩個部分:
先模式匹配到:[com1]然后執(zhí)行動作:a=1,再接著有來個模式+命令
模式:“a==1&&$1~/key/”
a==1因為已經(jīng)賦值了,所以執(zhí)行下一步,如果$1第一個字段匹配key的值,則
打印第2項,緊接著退出,退出就不會打印到匹配[com2]和[com3]的key值.
 
需求會變得,現(xiàn)在變成取【com】幾個key對應(yīng)的值,提供的shell的腳本如下:


代碼如下:


#!/bin/sh
getconfig()
{
  SECTION=$1
  CONFILE=$2
  ENDPRINT="key\tfile\t"
  echo "$ENDPRINT"
  for loop in `echo $ENDPRINT|tr '\t' ' '`
  do
       #這里面的的SECTION的變量需要先用雙引號,再用單引號,我想可以這樣理解,
       #單引號標(biāo)示是awk里面的常量,因為$為正則表達(dá)式的特殊字符,雙引號,標(biāo)示取變量的值
       #{gsub(/[[:blank:]]*/,"",$2)去除值兩邊的空格內(nèi)容
       awk -F '=' '/\['"$SECTION"'\]/{a=1}a==1&&$1~/'"$loop"'/{gsub(/[[:blank:]]*/,"",$2);printf("%s\t",$2) ;exit}' $CONFILE
  done
}
 
#更改變量名稱
CONFIGFILE=$1
echo "========================================================"
#文件名稱
echo "+++ConfigName:$CONFIGFILE+++++++++++++++++++++++++++++++"
#取得ids中的每個id把,號分隔改成空格,因為循環(huán)內(nèi)容要以空格分隔開來
profile=`sed -n '/ids/'p $CONFIGFILE | awk -F= '{print $2}' | sed 's/,/ /g'`
#對于一個配置文件中的所有id循環(huán)
for OneCom in $profile
do
  echo "--------------------------------------------------"
  echo "COM:$OneCom"
  #此處函數(shù)調(diào)用有時候不能用反引號,不然會出錯,此處原由還不清楚知道的麻煩請告之
  getconfig  $OneCom  $CONFIGFILE
  echo "\n"
  echo "--------------------------------------------------"
  #break
done
echo "========================================================"



 
執(zhí)行的結(jié)果如下:


代碼如下:

$ one.sh File
========================================================
+++ConfigName:File+++++++++++++++++++++++++++++++
--------------------------------------------------
COM:com1
key     file  
name    file1 
--------------------------------------------------
--------------------------------------------------
COM:com2
key     file  
name1   file2 
--------------------------------------------------
--------------------------------------------------
COM:com3
key     file  
name2   file3 
--------------------------------------------------



 
嘿嘿需求又變了,配置文件有多個,怎么取多個文件的配置項嘛:


代碼如下:

#!/bin/sh
getconfig()
{
  SECTION=$1
  CONFILE=$2
  ENDPRINT="key\tfile\t"
 
  echo "$ENDPRINT"
  for loop in `echo $ENDPRINT|tr '\t' ' '`
  do
  
       awk -F '=' '/\['"$SECTION"'\]/{a=1}a==1&&$1~/'"$loop"'/{gsub(/[[:blank:]]*/,"",$2);printf("%s\t",$2) ;exit}' $CONFILE
  done
}
 
#顯示的多個文件名將多行的回車符轉(zhuǎn)成逗號分隔符
CONFIGFILES=`ls $1|tr '\n' ','`
#查看到底有多個配置文件
_Num=`echo $CONFIGFILES|tr -cd \,|wc -c`
#臨時變量保存配置多個文件
_TMPFILES=$CONFIGFILES
while [ $_Num -ge 1 ]
do
  #得到一個文件
  CONFIGFILE=`echo $_TMPFILES|cut -d ',' -f1`
  #余下的文件
  _TMPFILES=`echo $_TMPFILES|cut -d ',' -f2-`
  #配置文件數(shù)量減一
  _Num=$(($_Num-1))
  echo "========================================================"
  #文件名稱
  echo "+++ConfigName:$CONFIGFILE+++++++++++++++++++++++++++++++"
  profile=`sed -n '/ids/'p $CONFIGFILE | awk -F= '{print $2}' | sed 's/,/ /g'`
  #對于一個配置文件中的所有id循環(huán)
  for OneCom in $profile
  do
    echo "--------------------------------------------------"      
    echo "COM:$OneCom"
    getconfig  $OneCom  $CONFIGFILE
    echo "\n"
    echo "--------------------------------------------------"
    #break
  done
echo "========================================================"
done



“Shell腳本讀取ini配置文件的實現(xiàn)方法”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

本文題目:Shell腳本讀取ini配置文件的實現(xiàn)方法-創(chuàng)新互聯(lián)
URL鏈接:http://www.aaarwkj.com/article12/hcedc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)關(guān)鍵詞優(yōu)化小程序開發(fā)、網(wǎng)站建設(shè)網(wǎng)站策劃、網(wǎng)站維護(hù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)
日产一区二区三区网站| 人妻操人人妻中出av| 亚洲精品一区二区三区高清| 偷窥偷拍视频一区二区| 97人妻人人澡人人爽| 手机不卡高清播放一区二区| 亚洲区一区二区三区精品| 国产国产人免费人成免费人妖 | 国产一级黄色免费大片| 韩国午夜福利视频网站| 日本精品中文字幕人妻| 在线播放精品免费不卡| 亚洲国产欧美日韩在线不卡成人 | 欧美黄片不用下载在线观看| 亚洲国产高清第一第二区| 免费爱爱视频在线观看| 亚洲欧美国产日韩天堂区| 亚洲欧美综合精品二区| 亚洲欧美综合另类久久| 青青草国产成人自拍视频在线观看| 国产精品美女黄色av| 日日夜夜添添精品视频| 久久精品人妻中文av| 97精品国产高清在线| 亚洲视频在线的视频在| 久久精品一区二区熟女| 国产亚洲一线二线三线| 国内精品亚洲成av人片麻豆| 日本道视频一区二区三区| 国产av一区二区三区日韩接吻| 午夜18禁毛片免费看| 欧美一区二区三区有限公司| 中文成人无字幕乱码精品| 欧美激情性国产精品潮| 亚洲精品国产熟女久久| 丝袜亚洲激情欧美日韩偷拍| 国产三级三级三级精品8ⅰ区| 手机在线观看av大片| 全国最大成人免费视频| 中文字幕日韩不卡顿一区二区| 国产精品超碰在线观看|