如何在Shell脚本中获取INI值?

我有一个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

我该怎么做?


慕森卡
浏览 1235回答 3
3回答

临摹微笑

然后使用awk对该行进行grepping如何version=$(awk -F "=" '/database_version/ {print $2}' parameters.ini)

弑天下

您可以通过以下方式使用bash本机解析器来解释ini值:$ source <(grep = file.ini)样本文件:[section-a]&nbsp; var1=value1&nbsp; var2=value2&nbsp; 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
打开App,查看更多内容
随时随地看视频慕课网APP