TGViewer
BashTex | Linux BashTex | Linux @bash_tex · 2.51K subscribers
Post #280 1.22K
Парсим YAML и TOML в bash без внешних зависимостей

YAML и TOML - популярные форматы конфигураций. Но в чистом bash их разбирать - задача нетривиальная. Особенно если не хочешь тащить yq, shyaml, python и toml-cli.

Разберемся, как выжать максимум из awk, grep, IFS и других стандартных средств.

▪️ YAML (только простые key: value)


parse_yaml() {
grep '^[^#[:space:]].*:' "$1" | awk -F': ' '
NF == 2 { gsub(/"/, "", $2); print $1 "=" $2 }
'
}


Пример:


# config.yaml
port: 8080
host: localhost
debug: true


Вызов:


eval $(parse_yaml config.yaml)

echo "$host:$port" # → localhost:8080


Не поддерживает вложенные уровни и массивы - только flat YAML.

▪️ TOML (ключ=значение)


parse_toml() {
grep -v '^\s*#' "$1" | grep '=' | while IFS='=' read -r key val; do
key=$(echo "$key" | xargs)
val=$(echo "$val" | sed -E 's/^["'\'']//; s/["'\'']$//' | xargs)
echo "$key=$val"
done
}


Пример:


# config.toml
user = "admin"
port = 9000


Вызов:


eval $(parse_toml config.toml)

echo "$user:$port" # → admin:9000


🟩 Преимущества

📍 Легко встраивается в скрипты
📍 Не требует ничего, кроме POSIX-инструментов
📍 Можно логировать значения или сохранять в массивы

🔲 Ограничения

📍 Нет поддержки массивов, вложенных таблиц, якорей
📍 YAML с отступами, списками и вложениями - не обработается

BashTex 📱 #bash
  • 👍 6
More from @bash_tex
  1. Oct 12, 2026xargs против while read: где быстрее и безопаснее Обе конструкции позволяют обработать спи…
  2. Oct 9, 2026BashTex 📱 #мем
  3. Oct 8, 2026Bridge FDB - как Linux bridge узнаёт, где находится MAC Linux bridge не знает заранее, за…
  4. Oct 7, 2026/dev/tcp - сетевое соединение средствами Bash В Bash есть малоизвестная возможность работа…
  5. Oct 6, 2026Ephemeral ports - почему заканчиваются исходящие TCP-порты Когда приложение устанавливает…
  6. Oct 5, 2026name_to_handle_at() - как получить файловый объект без обычного пути В Linux обычно обраща…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →