Терминал OS X: застрял в строке">"

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

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

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

Control + D дает мне:

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

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

5
задан JakeGould
источник

3 ответов

ваш пример это:

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

вторая цитата после _search " умная цитата "(ie:) вместо прямой кавычки (то есть: "). Так и должно быть; обратите внимание, как я добавил цитату после ?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": {} }
}
'
2
отвечен JakeGould 2018-06-04 20:59:01
источник

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

1. Читать из stdin

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
отвечен Diego S. 2018-06-04 18:18:34
источник

вторая" двойная кавычка " неверна. Так как котировки не закрыты, вы получаете $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]
1
отвечен Ignacio Vazquez-Abrams 2018-06-04 18:22:43
источник

Другие вопросы curl macos terminal