小编twi*_*ejr的帖子

使用bash以递归方式合并yaml配置文件

是否可以使用一些智能管道和编码,以递归方式合并yaml文件?在PHP中,我创建了一个数组(每个模块可以添加或更新系统中的/的配置节点).

目标是导出shellcript,它将所有单独的模块文件夹的配置文件合并为大合并文件.例如,它更快,更高效,客户在我们通过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
Run Code Online (Sandbox Code Playgroud)

配置看起来像:

date:
   format:
      date_regular: %d-%m-%Y
Run Code Online (Sandbox Code Playgroud)

例如,一个模块可以这样做:

date:
   format:
      date_regular: regular dates are boring
      date_special: !!!%d-%m-%Y!!!
Run Code Online (Sandbox Code Playgroud)

到目前为止,我有:

#!/bin/bash
#........
cp -R $dir_project/ $dir_to/
for i in $dir_project/mod/*/
do
    cp -R "${i}/." $dir_to/sys/
done
Run Code Online (Sandbox Code Playgroud)

这当然会破坏循环中所有现有的配置文件..(其余的系统文件都是唯一命名的)

基本上,我需要一个用于命令行的yaml解析器,以及一个像array_merge_recursive一样的替代方法.然后一个yaml作家输出它合并.我担心我必须开始学习Python,因为bash不会在这个上削减它.

bash recursion yaml

4
推荐指数
2
解决办法
5658
查看次数

标签 统计

bash ×1

recursion ×1

yaml ×1