将UNIX环境输出为JSON

时间:2015-08-12 22:03:39

标签: json environment-variables jq

我喜欢unix one-liner,它将当前的执行环境输出为JSON结构,如:{" env-var" :" env-value",...等......}

这种方式有效:

(echo "{"; printenv | sed 's/\"/\\\"/g' | sed -n 's|\(.*\)=\(.*\)|"\1"="\2"|p' | grep -v '^$' | paste -s -d"," -; echo "}")

但有一些额外的行,我认为如果环境值或变量有' ='或其中的换行符。

更喜欢纯粹的bash / sh,但紧凑的python / perl / ruby​​ / etc one-liners也会受到赞赏。

2 个答案:

答案 0 :(得分:12)

使用jq 1.5(例如jq 1.5rc2 - 见http://stedolan.github.io/jq):

$ jq -n env

答案 1 :(得分:8)

这对我有用:

python -c 'import json, os;print(json.dumps(dict(os.environ)))'

这很简单;主要的复杂因素是os.environ是一个类似dict的对象,但它实际上并不是一个字典,因此在将它提供给json序列化程序之前必须将其转换为dict。

在print语句周围添加括号使它可以在Python 2和3中工作,因此它应该适用于大多数* nix系统的可预见的未来(特别是因为Python默认出现在任何主要的发行版上)。