我尝试执行一个 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
给我相同的结果。
答案1
您的样本是这样的:
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": {} }
}
'
答案2
有一些方法可以实现这一点:
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
答案3
第二个“双引号”是错误的。由于引号未闭合,因此您会收到$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]