输出 UNIX 环境为 JSON
Output UNIX environment as JSON
我想要一个 unix 单行程序,它将当前执行环境输出为 JSON 结构,例如:{ "env-var" : "env-value", ... 等等 .. .}
这有点管用:
(echo "{"; printenv | sed 's/\"/\\"/g' | sed -n 's|\(.*\)=\(.*\)|""=""|p' | grep -v '^$' | paste -s -d"," -; echo "}")
但是有一些额外的行,我认为如果环境值或变量中有“=”或换行符,它们将不起作用。
更喜欢纯 bash/sh,但紧凑的 python / perl / ruby / 等单行代码也将受到赞赏。
这对我有用:
python -c 'import json, os;print(json.dumps(dict(os.environ)))'
很简单;主要的复杂之处在于 os.environ
是一个类似字典的对象,但它实际上并不是字典,因此在将它提供给 json 序列化程序之前必须将其转换为字典。
在 print 语句周围添加括号可以让它在 Python 2 和 3 中工作,因此它应该在可预见的未来在大多数 *nix 系统上工作(特别是因为 Python 默认情况下任何主要发行版)。
使用 jq 1.5(例如 jq 1.5rc2 -- 参见 http://stedolan.github.io/jq):
$ jq -n env
我想要一个 unix 单行程序,它将当前执行环境输出为 JSON 结构,例如:{ "env-var" : "env-value", ... 等等 .. .}
这有点管用:
(echo "{"; printenv | sed 's/\"/\\"/g' | sed -n 's|\(.*\)=\(.*\)|""=""|p' | grep -v '^$' | paste -s -d"," -; echo "}")
但是有一些额外的行,我认为如果环境值或变量中有“=”或换行符,它们将不起作用。
更喜欢纯 bash/sh,但紧凑的 python / perl / ruby / 等单行代码也将受到赞赏。
这对我有用:
python -c 'import json, os;print(json.dumps(dict(os.environ)))'
很简单;主要的复杂之处在于 os.environ
是一个类似字典的对象,但它实际上并不是字典,因此在将它提供给 json 序列化程序之前必须将其转换为字典。
在 print 语句周围添加括号可以让它在 Python 2 和 3 中工作,因此它应该在可预见的未来在大多数 *nix 系统上工作(特别是因为 Python 默认情况下任何主要发行版)。
使用 jq 1.5(例如 jq 1.5rc2 -- 参见 http://stedolan.github.io/jq):
$ jq -n env