mot*_*ess 1 bash json environment-variables jq
我想使用 jq 来制作 bash 中的可导出变量。我遇到了包含空格的字符串的问题。我尝试修改我的 jq,但我得到的只是无效的字符错误。我试过单引号或双引号,但都不适合我。我在这里缺少什么?
输入:
{
"PD_TOKEN":"Token y_NbAkKc66ryYTWUXYEu",
"API":"http://cool.api/",
"HELP_URL":"https://help.com"
}
Run Code Online (Sandbox Code Playgroud)
jq:
jq -r 'to_entries|map("\(.key)=\(.value|tostring)")' /json
Run Code Online (Sandbox Code Playgroud)
当前结果:
PD_TOKEN=Token y_NbAkKc66ryYTWUXYEu
Run Code Online (Sandbox Code Playgroud)
想要的结果(注意引号):
PD_TOKEN="Token y_NbAkKc66ryYTWUXYEu"
Run Code Online (Sandbox Code Playgroud)
您可以使用@sh而不是tostring安全地转义外壳:
$ jq -r 'to_entries | map("\(.key)=\(.value|@sh)")[]' infile.json
PD_TOKEN='Token y_NbAkKc66ryYTWUXYEu'
API='http://cool.api/'
HELP_URL='https://help.com'
Run Code Online (Sandbox Code Playgroud)
此外,没有map:
在第一步中使用数组迭代器(h/tip oguz ismail):
$ jq -r 'to_entries | map("\(.key)=\(.value|@sh)")[]' infile.json
PD_TOKEN='Token y_NbAkKc66ryYTWUXYEu'
API='http://cool.api/'
HELP_URL='https://help.com'
Run Code Online (Sandbox Code Playgroud)
迭代键(h/tip ikegami):
jq -r 'to_entries[] | "\(.key)=\(.value|@sh)"' infile.json
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
117 次 |
| 最近记录: |