bashだと以下のjqコマンドは期待通りに動作します。
$ echo '{"items":[{"id":1,"name":"foo"},{"id":2,"name":"bar"}]}' | jq '.items[] | select(.name == "bar") | .name' "bar"
Powershellで同じコマンドを実行するとエラーになります。
$ echo '{"items":[{"id":1,"name":"foo"},{"id":2,"name":"bar"}]}' | jq '.items[] | select(.name == "bar") | .name' jq : jq: error: bar/0 is not defined at <top-level>, line 1: 発生場所 行:15 文字:66 + ... ":2,"name":"bar"}]}' | jq '.items[] | select(.name == "bar") | .name' + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (jq: error: bar/...level>, line 1::String) [], RemoteException + FullyQualifiedErrorId : NativeCommandError .items[] | select(.name == bar) | .name jq: 1 compile error
エラーメッセージをみると、.name == "bar"
のダブルクォーテーションが認識されていないようです。エスケープすると期待通りに動作しました。
echo '{"items":[{"id":1,"name":"foo"},{"id":2,"name":"bar"}]}' | jq '.items[] | select(.name == \"bar\") | .name' "bar"