将JSON转换为bash环境variables

我写了这个美丽的一段时间后,运行在服务器上,并将JSON环境variables转换为bash .env格式。

 #!/usr/bin/env node var strings = [] process.stdin.resume() process.stdin.setEncoding('utf8') process.stdin.on('data', function(data) { var json = JSON.parse(data) for (var key in json) { var val = json[key] strings.push(key + '="' + val + '"') } }) process.stdin.on('end', function() { var output = strings.join('\n') process.stdout.write(output) }) 

这可以做到没有节点,只是bash? 我无法在没有安装节点或没有指定正确的path的服务器上工作。

是的,假设您要保留的所有键/ VAL对都是以下forms:

 "key":"stringval" "key":numval "key":true or false or null 

(在结肠周围有可选空间):

 #!/bin/sh tr -d '\n' | grep -o '"[A-Za-z_][A-Za-z_0-9]\+"\s*:\s*\("[^"]\+"\|[0-9\.]\+\|true\|false\|null\)' | sed 's/"\(.*\)"\s*:\s*"\?\([^"]\+\)"\?/\1="\2"/' 

例:

 cat manifest.json | ./json2env.sh 

产量

 name="Polymer Starter Kit" short_name="Polymer Starter Kit" src="images/touch/icon-72x72.png" sizes="72x72" type="image/png" test1="0.123" test2="true" test3="false" test4="null"