bash |
您所在的位置:网站首页 › yml合并 › bash |
是否可以使用一些智能管道和编码,以递归方式合并 yaml 文件? 在 PHP 中,我将它们组成一个数组(每个模块都可以添加或更新系统中/的配置节点)。 目标是一个导出 shellscript,它将所有单独的模块文件夹的配置文件合并到大的合并文件中。例如,它更快、更高效,并且在我们通过 FTP 部署新版本时客户不需要模块化。 它的行为应该像 PHP 函数:array_merge_recursive 文件系统结构是这样的: mod/a/config/sys.yml mod/a/config/another.yml mod/b/config/sys.yml mod/b/config/another.yml mod/c/config/totally-new.yml sys/config/sys.yml配置如下: date: format: date_regular: %d-%m-%Y一个模块可以,比方说,这样做: date: format: date_regular: regular dates are boring date_special: !!!%d-%m-%Y!!!到目前为止,我有: #!/bin/bash #........ cp -R $dir_project/ $dir_to/ for i in $dir_project/mod/*/ do cp -R "${i}/." $dir_to/sys/ done这当然会破坏循环中所有现有的配置文件..(其余系统文件是唯一命名的) 基本上,我需要一个用于命令行的 yaml 解析器,以及一个类似 array_merge_recursive 的替代方案。然后一个 yaml 编写器输出它合并。我担心我必须开始学习 Python,因为 bash 不会在这方面削减它。 最佳答案 例如,您可以使用 perl。下一个类轮: perl -MYAML::Merge::Simple=merge_files -MYAML -E 'say Dump merge_files(@ARGV)' f1.yaml f2.yaml对于下一个输入文件:f1.yaml date: epoch: 2342342343 format: date_regular: "%d-%m-%Y"f2.yaml date: format: date_regular: regular dates are boring date_special: "!!!%d-%m-%Y!!!"打印合并结果... --- date: epoch: 2342342343 format: date_regular: regular dates are boring date_special: '!!!%d-%m-%Y!!!'因为@Caleb 指出该模块现在只是开发人员,这里是一个替代品。它有点长,使用两个(但通常可用)模块: YAML 和Hash::Merge::Simple perl -MYAML=LoadFile,Dump -MHash::Merge::Simple=merge -E 'say Dump(merge(map{LoadFile($_)}@ARGV))' f1.yaml f2.yaml产生与上面相同的结果。 关于bash - 使用 bash 递归合并 yaml 配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25630633/ |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |