Я танцевал с этой проблемой в течение нескольких часов, и мне не повезло решить ее, просматривая похожие посты. Надеюсь, это достаточно просто для быстрого исправления.
По сути, у меня есть сценарий python, который извлекает секрет и выдает его как объект json в стандартный вывод. Существует сценарий bash, который вызывает этот сценарий python, извлекает выходные данные из сценария и предназначен для анализа имени пользователя и пароля из вывода json для использования.
Упрощенный код python :
# test.py
payload = response.payload.data.decode('UTF-8').replace('\n', '')
# ^ equates to:
# payload = "{\"username: \"test\", \"password\": \"test\"}"
sys.stdout.write(json.dumps(payload))
Упрощенный bash код:
#!/bin/bash
credentials=$(python test.py)
echo $(credentials)
echo $(credentials) | jq .
echo $(credentials) | jq .username
Вывод:
"{\"username: \"test\", \"password\": \"test\"}" # for echo #1
"{\"username: \"test\", \"password\": \"test\"}" # for echo #2 with | jq .
jq: error (at <stdin>:1): Cannot index string with string "username" # for echo #3
Вместо ошибки я ожидаю, что третий вывод будет:
test
ОБНОВЛЕНИЕ
Я смог наконец решить эту проблему, сделав что-то, что кажется немного хакерским. Измененный код bash, исправляющий эту проблему:
#!/bin/bash
credentials=$(python test.py | jq -r .)
echo $(credentials)
echo $(credentials) | jq .
echo $(credentials) | jq .username