亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在Shell腳本中獲取INI值?

如何在Shell腳本中獲取INI值?

慕森卡 2019-12-21 12:50:31
我有一個parameters.ini文件,例如:[parameters.ini]    database_user    = user    database_version = 20110611142248我想從bash shell腳本中讀取并使用parameters.ini文件中指定的數據庫版本,以便進行處理。#!/bin/sh    # Need to get database version from parameters.ini file to use in script    php app/console doctrine:migrations:migrate $DATABASE_VERSION我該怎么做?
查看完整描述

3 回答

?
臨摹微笑

TA貢獻1982條經驗 獲得超2個贊

然后使用awk對該行進行grepping如何


version=$(awk -F "=" '/database_version/ {print $2}' parameters.ini)


查看完整回答
反對 回復 2019-12-21
?
弒天下

TA貢獻1818條經驗 獲得超8個贊

您可以通過以下方式使用bash本機解析器來解釋ini值:


$ source <(grep = file.ini)

樣本文件:


[section-a]

  var1=value1

  var2=value2

  IPS=( "1.2.3.4" "1.2.3.5" )

要訪問變量,只需打印它們:echo $var1。您也可以使用上面(echo ${IPS[@]})所示的數組。


如果您只想要一個值,只需grep即可:


source <(grep var1 file.ini)

這很簡單,因為您不需要任何外部庫來解析數據,但是它有一些缺點。例如:


如果在=(變量名和值)之間有空格,則必須先修剪空格,例如


$ source <(grep = file.ini | sed 's/ *= */=/g')

或者,如果您不關心空格(包括中間的空格),請使用:


$ source <(grep = file.ini | tr -d ' ')

要支持;評論,請將其替換為#:


$ sed "s/;/#/g" foo.ini | source /dev/stdin

不支持這些部分(例如,如果您具有[section-name],則必須如上所示將其過濾掉,例如grep =),對于其他意外錯誤也是如此。


如果你需要閱讀在特定的部分具體值,使用grep -A,sed,awk或ex)。


例如


source <(grep = <(grep -A5 '\[section-b\]' file.ini))

注意:在哪里-A5是本節中要讀取的行數。替換source為cat進行調試。


如果您有任何解析錯誤,請通過添加以下內容來忽略它們: 2>/dev/null


查看完整回答
反對 回復 2019-12-21
  • 3 回答
  • 0 關注
  • 1282 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號