将属性与数字文字进行比较
Compare attribute with number literal
我正在尝试查找恰好具有 2 个内核的所有 VM:
$ az vm list-sizes -o json --query "[?numberOfCores == 2]"
az vm list-sizes: error: argument --query: invalid query value: '[?numberOfCores == 2]'
因为我怀疑是az
命令出错,所以我安装了jp directly,但是也报错:
$ az vm list-sizes -o json | jp "[?numberOfCores == 2]"
SyntaxError: Invalid token: tNumber
[?numberOfCores == 2]
在 the jmespath specification 中,看起来我必须使用反引号 `
字符,但它没有给出错误而是没有结果:
$ az vm list-sizes -o json | jp '[?numberOfCores == `2`]'
[]
这是(缩写)返回的 json 我正在尝试过滤:
$ az vm list-sizes -o json | head -n 20
[
{
"maxDataDiskCount": 4,
"memoryInMb": 123,
"name": "Standard_DS1",
"numberOfCores": 1,
"osDiskSizeInMb": 456,
"resourceDiskSizeInMb": 789
},
{
"maxDataDiskCount": 8,
"memoryInMb": 123,
"name": "Standard_DS2",
"numberOfCores": 2,
"osDiskSizeInMb": 456,
"resourceDiskSizeInMb": 789
}
]
(我混淆了大小,因为我不想被 MS 起诉共享商业机密或其他东西)
您的 JMESPath 查询是正确的,但是 jp
的自制版本的构建方式存在问题(它使用过时的脚本来构建 jp
二进制文件)。现在,如果您不使用自制软件,jp
的自制软件安装版本将始终使用来自 https://github.com/jmespath/jp/releases. These binaries are tested on every commit. You should be able to brew update && brew upgrade jp
, or use a binary from https://github.com/jmespath/jp/releases 的已签名发布二进制文件。
在我的例子中,我在执行 office365 cli 命令时使用 双引号 和 --query 标志,与 @user3151902 正在使用 .
注意:: 双引号适用于字符串值,但会引发数字值错误。
错误的方式::
m365 spo list list -o json --query "[?BaseTemplate==`100`]" -u https://{contoso}.sharepoint.com/sites/{siteName}
正道::
m365 spo list list -o json --query '[?BaseTemplate==`100`]' -u https://{contoso}.sharepoint.com/sites/{siteName}
我正在尝试查找恰好具有 2 个内核的所有 VM:
$ az vm list-sizes -o json --query "[?numberOfCores == 2]"
az vm list-sizes: error: argument --query: invalid query value: '[?numberOfCores == 2]'
因为我怀疑是az
命令出错,所以我安装了jp directly,但是也报错:
$ az vm list-sizes -o json | jp "[?numberOfCores == 2]"
SyntaxError: Invalid token: tNumber
[?numberOfCores == 2]
在 the jmespath specification 中,看起来我必须使用反引号 `
字符,但它没有给出错误而是没有结果:
$ az vm list-sizes -o json | jp '[?numberOfCores == `2`]'
[]
这是(缩写)返回的 json 我正在尝试过滤:
$ az vm list-sizes -o json | head -n 20
[
{
"maxDataDiskCount": 4,
"memoryInMb": 123,
"name": "Standard_DS1",
"numberOfCores": 1,
"osDiskSizeInMb": 456,
"resourceDiskSizeInMb": 789
},
{
"maxDataDiskCount": 8,
"memoryInMb": 123,
"name": "Standard_DS2",
"numberOfCores": 2,
"osDiskSizeInMb": 456,
"resourceDiskSizeInMb": 789
}
]
(我混淆了大小,因为我不想被 MS 起诉共享商业机密或其他东西)
您的 JMESPath 查询是正确的,但是 jp
的自制版本的构建方式存在问题(它使用过时的脚本来构建 jp
二进制文件)。现在,如果您不使用自制软件,jp
的自制软件安装版本将始终使用来自 https://github.com/jmespath/jp/releases. These binaries are tested on every commit. You should be able to brew update && brew upgrade jp
, or use a binary from https://github.com/jmespath/jp/releases 的已签名发布二进制文件。
在我的例子中,我在执行 office365 cli 命令时使用 双引号 和 --query 标志,与 @user3151902 正在使用 .
注意:: 双引号适用于字符串值,但会引发数字值错误。
错误的方式::
m365 spo list list -o json --query "[?BaseTemplate==`100`]" -u https://{contoso}.sharepoint.com/sites/{siteName}
正道::
m365 spo list list -o json --query '[?BaseTemplate==`100`]' -u https://{contoso}.sharepoint.com/sites/{siteName}