我不久前写了这个漂亮的东西,以便在服务器上运行,并将环境变量从JSON
转换为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?在没有安装节点或没有指定正确路径的服务器上,我很难实现这一点。
是的,假设您要保留的所有密钥/val对的形式为:
"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"