我正在尝试get both the HTTP code and the output of a curl
command作为shell脚本的一部分,但我反过来试图将它们都设置为变量。我的代码(使用pushbullet API)看起来像这样:
CURL_OUTPUT="$(exec 3>&1; \
HTTP_CODE="$(curl -s -S \
-w "%{http_code}" -o >(cat >&3) \
--header 'Authorization: Bearer '"$ACCT_TOKEN" \
-X POST https://api.pushbullet.com/v2/pushes \
--header 'Content-Type: application/json' \
--data-binary "$JSON")" \
)"
理论上应将$CURL_OUTPUT
设置为curl
和$HTTP_CODE
返回的JSON到我获得的状态代码。相反,我只得到$CURL_OUTPUT
; $HTTP_CODE
是空的。
但是,如果我不做外巢,就像这样:
exec 3>&1; \
HTTP_CODE="$(curl -s -S \
-w "%{http_code}" -o >(cat >&3) \
--header 'Authorization: Bearer '"$ACCT_TOKEN" \
-X POST https://api.pushbullet.com/v2/pushes \
--header 'Content-Type: application/json' \
--data-binary "$JSON")" \
该命令按预期工作;我将JSON重定向到stdout,状态代码最终在$HTTP_CODE
。
那么可以获得两个输出吗?我可以在命令替换行中分配变量吗?