Я пытаюсь сгенерировать вывод json, если входные данные поступают от переменных оболочки.
happystring="Bob Ross"
unhappynumber1="1942"
unhappyboolean=true
JSON=$(jq -n \
--arg happystring "$happystring" --arg unhappynumber1 "$unhappynumber1" \
--arg unhappyboolean $unhappyboolean \
'
{
happystring: $happystring,
unhappynumber1: $unhappynumber1,
unhappyboolean: $unhappyboolean
}
')
echo "$JSON" | jq
Создает этот вывод:
{
"happystring": "Bob Ross",
"unhappynumber1": "1942",
"unhappyboolean": "true"
}
Я знаю, что могу использовать tonumber
преобразовать строку в число в простом фильтре.Тем не менее, я не могу понять, как преобразовать строку в логическое значение.И мне трудно рассуждать, как это сделать, когда я получаю данные из shell shell и создаю новый json в качестве вывода.
Желаемый вывод:
{
"happystring": "Bob Ross",
"unhappynumber1": 1942,
"unhappyboolean": true
}
Было бы проще или яснее, если бы япроизвел json и сохранил его в оболочке var за один шаг, а затем выполнил дополнительное преобразование на втором шаге?