Rad*_*Rad 2 environment-variables jq
好吧,这可能是一个愚蠢的问题。我有test.json文件:
{
"timestamp": 1234567890,
"report": "AgeReport"
}
Run Code Online (Sandbox Code Playgroud)
我想要做的是提取timestamp和report值并将它们存储在一些环境变量中:
export $(cat test.json | jq -r '@sh "TIMESTAMP=\(.timestamp) REPORT=\(.report)"')
Run Code Online (Sandbox Code Playgroud)
结果是:
echo $TIMESTAMP $REPORT
1234567890 'AgeReport'
Run Code Online (Sandbox Code Playgroud)
问题是那些单引号会破坏其他命令。我怎样才能摆脱那些单引号?
为什么要使使用变得复杂eval并且引用混乱?而是简单地通过将变量与 NULL ( \u0000)连接来发出变量并在 shell 环境中读取它
{
IFS= read -r -d '' TIMESTAMP
IFS= read -r -d '' REPORT
} < <(jq -r '(.timestamp|tostring) + "\u0000" + .report + "\u0000"' test.json)
Run Code Online (Sandbox Code Playgroud)
这通过使字段由 NULL 分隔符(它不能成为字符串序列的一部分)连接来使您的解析更加健壮。