【问题标题】:YAML parser from bash来自 bash 的 YAML 解析器
【发布时间】:2015-06-20 21:36:36
【问题描述】:

我正在为 Symfony2 应用程序开发一个 pre-prod 服务器

我制作了一个小钩子脚本来更新我所有包含 Symfony 应用程序的 git 存储库。

#...

# Save old database
DATABASE_NAME=`CMD to Yaml Parser` 'app/config/parameters.yml' database_name
TODAY=`date +"%Y-%m-%d-%H:%M:%S"`
logger -t "Update website Symfony2" "Save SQL in $TODAY.sql"
mysqldump $DATABASE_NAME > sqlSave/$TODAY.sql 2>&1 | logger -t "Update website Symfony2"
# Update database with doctrine
php app/console doctrine:schema:update --force  2>&1 | logger -t "Update website Symfony2"

#...

如何访问此脚本上的数据库名称?

我的服务器在 Debian 上。那是一个解析 YAML 的包吗?

对不起我的英语,我正在学习它。

【问题讨论】:

  • 添加对脚本语言的依赖可以吗?他们中的许多人都有 YAML 解析库,因此您可以调用其中一个并让它从 YAML 输出您想要的数据。

标签: git automation symfony parsing yaml


【解决方案1】:

您可以使用 niet 直接在 shell/bash 中解析 yaml/json 文件。

易于安装和使用:

$ pip install -U niet

考虑以下示例:

$ cat dump.yaml
foo:
  bar:
    key: value
  baz:
    key: value
  tags:
    - one
    - two

你可以像这样解析这个示例文件:

  $ niet dump.yaml foo.bar.key
  value
  $ for el in $(niet dump.yaml foo.tags); do echo ${el}; done
  one
  two

Niet 与 shell 和其他 bash 类似。

Niet yaml parser documentation, source code, and samples.

【讨论】:

  • 我无法为 centos 找到 yq,而您对 niet 的建议确实很有帮助。
【解决方案2】:

根据app/config/parameters.yml 的结构和database_name 在其中的位置,您可能可以使用this parser。它会解析

foo:
  bar:
    key: value
  baz:
    key: value

进入 bash 关联数组。 100% Bash,但必须是 Bash 4.x。如果您不能坚持使用 Bash 4.x,那么 this question 上的其他答案可能会对您有所帮助。

【讨论】:

    猜你喜欢
    • 2018-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-11
    • 1970-01-01
    • 2010-09-22
    • 2011-05-19
    • 2013-01-02
    相关资源
    最近更新 更多