我试图将 HTTP 代码和curl
命令的输出作为 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
为返回的 JSONcurl
和$HTTP_CODE
我得到的状态码。相反,我只得到$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 重定向到标准输出,状态码以$HTTP_CODE
.
那么有可能同时获得两个输出吗?我可以在命令替换行中分配变量吗?