【发布时间】:2021-02-09 09:50:16
【问题描述】:
我正在尝试调用一个 api,并在同一行中使用 jq 解析其输出。
如果我在一行中完成所有操作,则会出现错误:
bash-4.2$ call_api -s "job=work_1*&status=Executing" | $PATH_API/jq '.statuses[].name // empty' --raw-output
parse error: Unfinished string at EOF at line 2301, column 61
但如果我将 api 的输出重定向到一个文件,然后将 jq 应用于该文件,它不会引发任何错误:
bash-4.2$ call_api -s "job=work_1*&status=Executing" > /tmp/kk
bash-4.2$ $PATH_API/jq '.statuses[].name // empty' --raw-output /tmp/kk
work_1_002103ALLGDC
work_1_000049EVEFIN
work_1_002038ALF003
你知道为什么吗?是否有可能修复它可以在一行中实现它?
【问题讨论】:
-
试试
call_api -s "job=work_1*&status=Executing" | tee /tmp/kk >/dev/null(删除/tmp/kk后是否还存在),看看$PATH_API/jq '.statuses[].name // empty' --raw-output /tmp/kk是否也失败,如果是,检查/tmp/kk的内容,看看有什么问题。有些程序在输出管道时表现不同,这可能是您的问题 -
另请注意,“在一条线上做事”很少是一个富有成效的目标,而且往往会适得其反,但如果这对你来说真的很重要,你总是可以选择用@分隔命令987654328@ 而不是换行