我正在尝试从yml文件运行shell脚本,并将从shell脚本生成的变量插入到yml文件中..我无法做到。 这是yml文件 版本:0.2
phases:
install:
- bash build.sh
- cd $DIR
这是构建脚本具有的
#!/bin/bash
directory=$(git log -1 --pretty=%B | awk '{print $1;}')
echo " directory: $directory"
build up -d -e DIR:$directory
export DIR=$directory
所有那些shell脚本做了获取git提交消息..我想要传输yml文件,从中调用shell脚本
答案 0 :(得分:1)
考虑以下内容,任何有效的YAML解析器都会接受:
{"phases": {"install": ["bash build.sh", "cd $DIR"]}}
jq
dir=/foo/bar/baz ## this can be anything
jq --arg dir "$dir" '
.phases.install = [ (.phases.install | map(sub("[$]DIR"; ($dir | @sh))))]
' <in.json >out.json
...将使用正确引用的版本替换$DIR
任何可能的此类名称的目录名称。 (这确实要求$DIR
不能在引用的上下文中使用;例如,如果您使用"$DIR"
,@sh
中jq
帮助器添加的引号字符将是作为文字处理。)
是的,由于所有JSON都是有效的YAML,因此 YAML