如何在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
我该怎么做?
没有找到相关结果
已邀请:
25 个回复
视蕉梁拌客
外镶受继
样本文件:
要访问变量,只需打印它们:
。您也可以使用上面显示的数组(
)。 如果您只想要一个值,只需grep即可:
这很简单,因为您不需要任何外部库来解析数据,但是它具有一些缺点。例如: 如果您在
(变量名和值)之间留有空格,则必须先修剪空格,例如
或者,如果您不关心空格(包括中间的空格),请使用:
要支持
注释,请将其替换为
:
不支持这些部分(例如,如果您已
,那么您必须按照上面显示的方法将其过滤掉,例如
),对于其他意外错误也是如此。 如果需要阅读特定章节中的特定值,请使用
,
,
或
)。 例如。
注意:其中“ 21”是该部分中要读取的行数。将
替换为
进行调试。 如果您有任何解析错误,请添加以下内容来忽略它们:
另请参阅:如何解析ini文件并将其转换为bash数组变量?在serverfault SE
焙恍挝厂熄
用法:
Bash ini-parser可以在The Old School DevOps博客网站上找到。
长拳
假设您要从section2获得param2。运行以下命令:
会给你
郸身
文件example.sh
芦歉竭皑
,则此代码没有:
扫窟
嗜蒂谷尘旱
-默认不打印任何内容
-执行表达式
-按照此模式显示任何内容 在模式中:
-模式从行的开头开始
-空格字符
-零个或多个(空格字符) 例:
所以: 查找行以零个或多个空格字符开头的模式, 后跟字符串my_key,后跟零个或多个空格字符,等号,然后再次零个或多个空格字符。按照该模式在该行上显示其余内容。
奥李
行稍微“复杂”,但工作原理非常相似。 函数逐行读取文件-查找节标记(
)和键/值声明(
)。 最终,您将获得对自己的函数的回调-部分,键和值。
氮顺
工具获取ini值,例如:
泉秘胁
因此您可以使用以下“ 17”脚本来解析上述数据:
这会将ini数据转换为这种平面格式:
因此使用section17 having,
或
更容易解析,因为每行都有节名称。 鸣谢与出处:Shell脚本的配置文件,MichaelGrünewald 或者,您可以使用以下项目:
,使用
的配置解析器。
妊辽剁茧
这是我在Linux上使用Python 3.5的代码:
肉簧咸缮
这是使用上述功能的示例代码:
慰泥悍瓶
标志来执行此命令,以执行命令行上给出的一系列Python语句:
这具有仅需要Python标准库的优势,而无需编写单独的脚本文件的优势。 或使用here文档以获得更好的可读性,因此:
皇小福另届
炬卤遁蝎变
具有读取和执行功能的bash脚本 / bin / parseini
然后在另一个脚本中,我获得命令的结果,并可以使用其中的任何变量 test.sh
最终从命令行输出是
雇砰
在文件中,您可以包含一些部分和一些行:
复制这个小的6行Python脚本并将其另存为
现在,例如,您可以在bash脚本中执行此操作。
要么
前提是: 您已经安装了Python 您已经安装了configparser库(应该随std python安装一起提供) 希望能帮助到你 :¬)
暑袜眠退
薄扩络拜
悲帽慑彤电
单线:
懊毁暗
):
在
中放入
行,最后:
如果行中有空格,例如
,请添加
进行修剪:
需复
诉嘎归亮
哭木算
config.ini
孝箱捆讨
或来自文件。