使用jq,我希望从环境变量中更新JSON文件中的integer
,但是该属性被解析为字符串。
例如,我想更新task_definition.json
中的内存属性。该属性必须是整数,否则API会引发错误。
原始文件
{
"containerDefinitions": [
{
"cpu": 128,
"image": "...",
"memory": 512
...
}
]
}
jq命令
export TASK_DEFINITION_MEMORY=256
jq '.containerDefinitions[0].memory = env.TASK_DEFINITION_MEMORY' task_definition.json > tmp.$$.json && mv tmp.$$.json task_definition.json
预期产出
{
"containerDefinitions": [
{
"cpu": 128,
"image": "...",
"memory": 256
...
}
]
}
实际输出
{
"containerDefinitions": [
{
"cpu": 128,
"image": "...",
"memory": "256"
...
}
]
}
发布于 2019-07-09 07:07:17
这里需要的是调用tonumber
将字符串转换为数字。//=
在这里有点像个红鲱鱼。
另一种选择是使用—-argjson
将数字传递给jq。
发布于 2019-07-09 02:25:34
尝试使用算术更新赋值操作符//=
https://stedolan.github.io/jq/manual/#Assignment
算术更新-赋值:+=、-=、*=、/=、%=、//= jq有几个形式为a op= b的运算符,它们都等同于|=。因此,+= 1可用于增量值,与|=相同。+ 1。
export TASK_DEFINITION_MEMORY=256
jq '.containerDefinitions[0].memory //= env.TASK_DEFINITION_MEMORY' task_definition.json > tmp.$$.json && mv tmp.$$.json task_definition.json
https://stackoverflow.com/questions/56949964
复制相似问题