Jq - 在 windows powershell 上 运行 时出现语法错误,但在 bash 终端上却成功

Jq - Syntax error when ran on windows powershell however on bash terminal it was successful

我试图使用 JQ 解析 OCI JSON 输出并在 Windows powershell 中出现语法错误,但是相同的命令在 Bash 终端中运行良好。 如果我遗漏了什么,请告诉我。

PS C:\myfiles> oci compute instance list-vnics --all --compartment-id xxxxxx  --profile myprof |C:\myfiles\jq-win64.exe ".data[]|select(."hostname-label"=="test1" )"

jq: error: syntax error, unexpected $end, expecting ';' or ')' (Windows cmd shell quoting issues?) at <top-level>, line 1: .data[]|select(. jq: 1 compile error PS C:myfiles>

尝试使用单引号中的 JQ 语句,出现以下语法错误:

PS C:\myfiles> oci compute instance list-vnics --all --compartment-id xxxxx  --profile myprof |C:\myfiles\jq-win64.exe '.data[]|select(."hostname-label"=="test1" )'

jq: error: syntax error, unexpected ==, expecting '$' (Windows cmd shell quoting issues?) at <top-level>, line 1: .data[]|select(.hostname-label==test1 ) jq: 1 compile error PS C:\MYDATA\myfiles>

我在 jplay.org 中尝试了同样的方法,并且在那里也工作正常。请在 Windows.

中告诉我如何解决此问题

谢谢

单引号内的双引号需要转义:

PS C:\myfiles> oci compute instance list-vnics --all --compartment-id xxxxx  --profile myprof |C:\myfiles\jq-win64.exe '.data[]|select(.\"hostname-label\"==\"test1\")'

如果你有变量,将其作为参数传递:

PS C:\myfiles> oci compute instance list-vnics --all --compartment-id xxxxx  --profile myprof |C:\myfiles\jq-win64.exe --arg host_name $host_name '.data[]|select(.\"hostname-label\"==$host_name)'