Есть ли способ получить вложенное значение из файла YAML в shellscript?

#python #shell #yaml #sh

#python #оболочка #yaml #sh

Вопрос:

Помимо использования yq, есть ли способ получить вложенную переменную из файла YAML в shellscript?

Пример: рассмотрим следующий файл yaml

 test.yaml
    main:
     item1: value1
     item2: value2
  

Есть ли способ извлечь значения item1 и item2 в переменные shellscript?

Использование grep,

 item=$(grep -h "item1" test.yaml)
actual=${item#*:}
  

Приведенное выше даст нужное мне значение, но есть ли лучший способ приблизиться к нему?
Это полученное значение будет использоваться для других задач в shellscript
У меня есть возможность использовать python с библиотекой yaml, а затем запустить скрипт python из shellscript, но какой способ сделать это был бы оптимальным?
Я бы предпочел, чтобы решение не включало установку каких-либо пакетов / зависимостей, но предложения приветствуются

Комментарии:

1. Использование grep для структурированных форматов, таких как XML, JSON, YAML и т. Д., Никогда не является хорошей идеей. Интересно, почему вы отклоняете yq . Это было бы, на мой взгляд, «оптимальным» способом.

2. Не имеет смысла говорить, что вы не хотите устанавливать какие-либо пакеты. Ваша оболочка (вероятно) является пакетом, как и grep.

3. Как правило, если вам необходимо установить ограничения в отношении того, какой ответ вы принимаете, пожалуйста, объясните причины этих ограничений, чтобы мы могли понять ваши требования. Также обратите внимание, что такие термины, как optimal , недостаточно четко определены в сложных областях, таких как сценарии оболочки, и поэтому неясно, для чего вы хотите оптимизировать. Скорость? Использование памяти? Строки кода? Обычно вы не получите все из одного единственного решения.