Установка переменной в подстановке команд
Я пытаюсь получить как 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
,
Так возможно ли получить оба выхода? Могу ли я назначить переменные в строке подстановки команд?