Jam*_*mes 2 linux macos bash shell json
我正在尝试在 bash 文件中使用curl 发出 GET 请求。\n因此我调用curl,并从我的服务器获取JSON 响应,然后我尝试获取作为响应一部分的对象行,并且我这样做了所以使用jq,这样我就可以打印该值。\n但它不起作用。
\n\n我的回应是这样的:
\n\n{"line":"Azul", "id":"j3453j45n35", "lat":"39.091937", "long":"-9.265441"}\nRun Code Online (Sandbox Code Playgroud)\n\n我的 bash 脚本:
\n\n#!/bin/bash\nwhile :\ndo\n cmd=$(curl -i -H "Content-Type: application/json" http://localhost:8080/cards/exists/1 | jq \xe2\x80\x98.\xe2\x80\x9dline\xe2\x80\x9d\xe2\x80\x99) \n sleep 2\ndone\nRun Code Online (Sandbox Code Playgroud)\n\n结果:
\n\n\n\n\njq: 错误:语法错误,意外的 INVALID_CHARACTER,期望 $end (Unix shell 引用问题?),第 1 行:\n \xe2\x80\x98.\xe2\x80\x9dline\xe2\x80\x9d\xe2\x80 \x99\n jq: 1 编译错误\n (23) 写入正文失败
\n
出了什么问题?\n我遵循了人们在网上建议的大量响应,但我不断收到相同的响应。\n我的 json 对象似乎是正确的。\n我正在 MacOS Sierra 上运行此文件
\n您的代码有两个问题:
\n\n您正在使用非 ASCII 引号( \xe2\x80\x98 \xe2\x80\x9d \xe2\x80\x9d \xe2\x80\x99),它jq无法理解:
\' " " \'TextEdit.app在 macOS 上,避免使用打开“智能引号”功能的标准文本编辑器,或通过菜单系统关闭该功能: Edit > Substitutions > Smart Quotes您的curl命令包含标头输出 ( -i),该jq输出会阻塞 - 只需省略-i:
#!/bin/bash\n\nwhile :; do\n cmd=$(curl -H \'Content-Type: application/json\' \'http://localhost:8080/cards/exists/1\' |\n jq \'.line\') \n sleep 2\ndone\nRun Code Online (Sandbox Code Playgroud)\n\n虽然\'."line"\'也可以,但不需要对这样的简单属性名称进行额外的引用。
另外,最好将要在shell 中按字面解释的字符串括起来。\'...\'
| 归档时间: |
|
| 查看次数: |
2711 次 |
| 最近记录: |