envsub-rs — это утилита для подстановки переменных окружения в текстовые файлы.
macos
curl -LO https://github.com/ibatanov/envsub-rs/releases/download/release-0.1.0/envsub-rs-macos.zip && unzip envsub-rs-macos.zip && sudo mv envsub-rs /usr/local/bin/ && chmod +x /usr/local/bin/envsub-rsubuntu
wget https://github.com/ibatanov/envsub-rs/releases/download/release-0.1.0/envsub-rs-ubuntu.zip && unzip envsub-rs-ubuntu.zip && sudo mv envsub-rs /usr/local/bin/ && chmod +x /usr/local/bin/envsub-rsПосле выполнения команды проверьте установку:
envsub-rs --version
envsub-rs --helpУдалите архив envsub-rs-*.zip, если он остался в текущей директории:
rm envsub-rs-*.zipecho 'Test and ${USER2:-admin} and ${USER:-guest}' | cargo run -- --no-unset --no-empty
Test and admin and guest
envsub-rs [OPTIONS]-i, --input <FILE>: Указывает входной файл. Если не указан, данные читаются из стандартного ввода (stdin).-o, --output <FILE>: Указывает выходной файл. Если не указан, результат выводится в стандартный вывод (stdout).--no-unset: Если установлено, утилита завершится с ошибкой, если переменная окружения не установлена.--no-empty: Если установлено, утилита завершится с ошибкой, если переменная окружения установлена, но пуста.
envsub-rs -i input.txtenvsub-rs -i input.txt -o output.txtcat input.txt | envsub-rsenvsub-rs -i input.txt --no-unset --no-empty#!/bin/bash
export NAME="World"
export GREETING="Hello"
envsub-rs -i template.txt -o output.txtГде template.txt содержит:
${GREETING}, ${NAME}!
После выполнения скрипта, output.txt будет содержать:
Hello, World!
${VAR}: Подставляет значение переменнойVAR. Если переменная не установлена, подставляет пустую строку.${VAR:-default}: Подставляет значение переменнойVAR. Если переменная не установлена, подставляет значениеdefault.$VAR: Подставляет значение переменнойVAR. Если переменная не установлена, подставляет пустую строку.
Если утилита завершается с ошибкой, она возвращает соответствующий код ошибки и сообщение:
Variable not set: Возникает, если переменная не установлена и установлена опция--no-unset.Variable is empty: Возникает, если переменная установлена, но пуста, и установлена опция--no-empty.Parsing error: Возникает при ошибках чтения/записи файлов или других ошибках парсинга.
envsub-rs предоставляет простой и гибкий способ подстановки переменных окружения в текстовые файлы. Используйте его для автоматизации задач, связанных с конфигурацией и шаблонизацией.