在命令替换中设置变量

时间:2015-03-12 02:55:52

标签: bash curl command-substitution

我正在尝试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

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

0 个答案:

没有答案