0

我试图将 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.

那么有可能同时获得两个输出吗?我可以在命令替换行中分配变量吗?

4

0 回答 0