jq встроенный метод select (): команда не найдена - PullRequest
0 голосов
/ 27 сентября 2018

Я использовал встроенный метод jq select для анализа строки json в сценарии оболочки и получил ошибку: command not found.

Вот мой сценарий оболочки: test.sh

#!/bin/bash

function test(){

   json='[{"id":1,"name":"jdjson"},{"id":2,"name":"imagetookit"}]'

   detail=`echo $json | jq .[]|select\(.id==2\)`
}

test

Я просто запустил скрипт в командной строке и получил следующую ошибку:

$ bash test.sh
test.sh:行5: select(.id==2): 未找到命令 (means "command not found") 

select - это встроенный метод команды jq, и я не знаю, почему

Нужно ли импортировать функцию?Как импортировать метод jq?

1 Ответ

0 голосов
/ 27 сентября 2018

Это не проблема jq, это проблема цитирования оболочки:

mytest(){
  json='[{"id":1,"name":"jdjson"},{"id":2,"name":"imagetookit"}]'
  detail=$(echo "$json" | jq '.[]|select(.id==2)')
  echo "$detail"
}
mytest
{
   "id": 2,
   "name": "imagetookit"
}

Обратите внимание на одинарную кавычку ' вокруг команды jq, поэтому обратная косая черта не требуется \.
Также предпочитайте $(...) вместо старой нотации обратного кавычка.

...