Установка переменной в подстановке команд

Я пытаюсь получить как HTTP-код, так и вывод curl Команда как часть сценария оболочки, но в свою очередь я пытаюсь установить их обоих в качестве переменных. Мой код (который использует API pushbullet) выглядит так:

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 в JSON, возвращенный curl а также $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,

Так возможно ли получить оба выхода? Могу ли я назначить переменные в строке подстановки команд?

0 ответов

Другие вопросы по тегам