Я пытаюсь выполнить команду Curl (для REST API ElasticSearch), которая выглядит следующим образом:

curl -X GET "localhost:9200/_search”?pretty -H 'Content-Type: application/json' -d'
{
  "query": { "match_all": {} }
}
'

Я получаю угловую скобку > в каждой строке и не могу понять, как выполнить команду, которую я ввел оттуда. Я нашел эту страницу с некоторой информацией, но я попробовал предложения, и это не работает.

Control + D дает мне:

-bash: неожиданный EOF при поиске соответствия `" '-bash: синтаксическая ошибка: неожиданный конец файла

Написание EOF, затем Control + D дает мне то же самое.

3 ответа3

2

Ваш образец это:

curl -X GET "localhost:9200/_search”?pretty -H 'Content-Type: application/json' -d'
{
  "query": { "match_all": {} }
}
'

Эта вторая цитата после _search является «умной цитатой» (то есть: ) вместо прямой цитаты (то есть: "). Так и должно быть; обратите внимание, как я добавил цитату после ?pretty вот так:

curl -X GET "localhost:9200/_search?pretty" -H 'Content-Type: application/json' -d'
{
  "query": { "match_all": {} }
}
'

Но это говорит, что делает практически не имеет смысла , почему есть любые кавычки вокруг этого URL , так как он легко может работать следующим образом:

curl -X GET localhost:9200/_search?pretty -H 'Content-Type: application/json' -d'
{
  "query": { "match_all": {} }
}
'
1

Есть несколько способов добиться этого:

1. Читать со стандартного ввода

curl -X GET http://localhost:9200/search?pretty -H 'Content-Type: application/json' -d @-

Затем вы можете ввести код JSON и нажать Ctrl+D для отправки.

Вы также можете передать его из другой программы, например:

some-node-app-that-outputs-json | curl -X GET http://localhost:9200/search?pretty -H 'Content-Type: application/json' -d @-

2. Читать из файла

Вы также можете записать его в файл и передать файл:

curl -X GET http://localhost:9200/search?pretty -H 'Content-Type: application/json' -d @yourfile.json
1

Вторая "двойная кавычка" неверна. Поскольку кавычки не закрыты, вы получаете $PS2 в качестве приглашения, чтобы вы могли закрыть его.

$ charinfo '"localhost:9200/_search”'
U+0022 QUOTATION MARK [Po]
U+006C LATIN SMALL LETTER L [Ll]
U+006F LATIN SMALL LETTER O [Ll]
 ...
U+0072 LATIN SMALL LETTER R [Ll]
U+0063 LATIN SMALL LETTER C [Ll]
U+0068 LATIN SMALL LETTER H [Ll]
U+201D RIGHT DOUBLE QUOTATION MARK [Pf]

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .