3 回答
TA贡献1982条经验 获得超2个赞
然后使用awk对该行进行grepping如何
version=$(awk -F "=" '/database_version/ {print $2}' parameters.ini)
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
- 3 回答
- 0 关注
- 1218 浏览
添加回答
举报