Преобразовать массив bash в JSON и записать в файл

У меня есть массив bash, который я хочу преобразовать в json и записать в файл. Предположим, это

my_strings=("hello" "world")

Мне удалось преобразовать его в json и записать в файл с помощью:

for f in "${my_strings[@]}"; do printf '%s' "$f" | jq -R -s .; done | jq -s >> test_.json

и выходной результирующий файл выглядит так:

[
  "hello",
  "world"
]

Однако результат, который я хотел бы получить,

{
    "strings_":
    [
        "hello",
        "world"
    ]
 }

Я попробовал добавить и добавить графики и ключ следующим образом:

printf '{\n\t"strings_":\n' > test_.json; for f in "${my_strings[@]}"; do printf '%s' "$f" | jq -R -s .; done | jq -s >> test_.json; printf "}\n" >> test_.json

но полученный отступ нехороший.

Есть лучший способ сделать это?

в простом ``` echo '{"strings":'$(cat test_.json)'}' | jq # { "strings": [ "привет", "мир" ] } ```

Popeye 01.07.2024 10:49

@Popeye в своей команде вы жестко кодируете строки массива, обычно они взяты из массива bash

roschach 01.07.2024 10:58

Э-э, нет, это не так. Комментарий содержит результат, но на самом деле он не является частью кода.

tripleee 01.07.2024 11:01

Тогда я не понимаю вашего комментария: мне кажется, что вы читаете файл с cat для создания json. Мне нужно создать json, а затем записать в файл

roschach 01.07.2024 11:07
Структурированный массив Numpy
Структурированный массив Numpy
Однако в реальных проектах я чаще всего имею дело со списками, состоящими из нескольких типов данных. Как мы можем использовать массивы numpy, чтобы...
T - 1Bits: Генерация последовательного массива
T - 1Bits: Генерация последовательного массива
По мере того, как мы пишем все больше кода, мы привыкаем к определенным способам действий. То тут, то там мы находим код, который заставляет нас...
Что такое деструктуризация массива в JavaScript?
Что такое деструктуризация массива в JavaScript?
Деструктуризация позволяет распаковывать значения из массивов и добавлять их в отдельные переменные.
1
4
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы ищете что-то вроде этого:

$ my_strings=("hello" "world")
$ jq -n --args '{strings_: $ARGS.positional}' "${my_strings[@]}"
{
  "strings_": [
    "hello",
    "world"
  ]
}

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