将变量从.sh文件发送到.yml

时间:2017-10-25 20:18:26

标签: bash shell github yaml

我正在尝试从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脚本

1 个答案:

答案 0 :(得分:1)

表示有效YAML 和JSON

考虑以下内容,任何有效的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"@shjq帮助器添加的引号字符将是作为文字处理。)

是的,由于所有JSON都是有效的YAML,因此 YAML