OS X terminal: preso em uma linha “”

0

Estou tentando executar um comando Curl (para a API REST do ElasticSearch) que se parece com:

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

Eu obtenho o colchete angular > em cada linha e não consigo descobrir como executar o comando que eu digitei a partir daí. Eu encontrei esta página com alguma informação, mas eu tentei o sugestões, e não está funcionando.

Control + D me dá:

-bash: unexpected EOF while looking for matching '"' -bash: syntax error: unexpected end of file

Escrevendo EOF, então Control + D me dá o mesmo.

    
por BBaysinger 04.06.2018 / 20:05

3 respostas

2

Sua amostra é esta:

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

Essa segunda cotação após _search é uma "cotação inteligente" (ou seja: ) em vez de uma cotação direta (ou seja, " ). Então deveria ser; observe como adicionei a cotação depois de ?pretty assim:

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

Mas, dito isto, faz pouco ou nenhum sentido o porquê de existirem quaisquer citações em torno desse URL, uma vez que pode funcionar facilmente assim:

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

Existem algumas maneiras de conseguir isso:

1. Leia de stdin

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

Depois, você pode digitar o código JSON e pressionar Ctrl + D para enviar.

Você também pode canalizá-lo de outro programa, por exemplo:

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

2. Leia do arquivo

Você também pode gravá-lo em um arquivo e passar o arquivo:

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

A segunda "aspa dupla" está errada. Como as citações não estão fechadas, você recebe $PS2 como um prompt para poder fechá-lo.

$ 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]
    
por 04.06.2018 / 20:22