Я хотел бы, чтобы код ниже вывел
KNOCK_KNOCK="Who is there?"
TEST_FILE='{
"KNOCK_KNOCK": "Who is there?"
}'
for s in $(echo $TEST_FILE | jq -r "to_entries|map(\"\
(.key)=\(.value|tostring)\")|.[]" ); do
echo $s
done
Я получил цикл из этого поста: Экспорт JSON в переменные окружения
и не могу понять, как изменить, чтобы получить ожидаемый результат.Кажется, проблема заключается в пробелах в .value
Для следующего теста я получаю ожидаемые результаты:
TEST_FILE='{
"KNOCK_KNOCK": "Whoisthere?",
"POSTGRES_URI": "postgress://user:pass@testdb.com",
"WILL": "I.AM"
}'
for s in $(echo $TEST_FILE | jq -r "to_entries|map(\"\(.key)=\
(.value|tostring)\")|.[]" ); do
echo $s
done
KNOCK_KNOCK=Whoisthere?
POSTGRES_URI=postgress://user:pass@testdb.com
WILL=I.AM
Я выбрал следующее решение, которое работает дляя, но принятый ответ в порядке.
TEST_FILE='{
"KNOCK_KNOCK": "Who is there?"
}'
echo $TEST_FILE | sed 's_[{}]__'| sed 's_: _=_' | sed 's_ _export _'