Одна из лучших практик при написании bash-утилит - добавлять
--help, чтобы объяснять, как работает скрипт. Но зачем дублировать описание в заголовке и в коде, если можно использовать один и тот же блок? С помощью cat <<EOF и sed можно генерировать справку прямо из комментариев скрипта.🛠 Пример структуры скрипта:
#!/bin/bash
: <<'USAGE'
my-script.sh - полезный инструмент
Использование:
./my-script.sh [опции]
Опции:
-h показать помощь
-f FILE указать файл
-v включить подробный вывод
Пример:
./my-script.sh -f config.ini -v
USAGE
# Генерация help из заголовка
show_help() {
sed -n "/^: <<'USAGE'/,/^USAGE/p" "$0" | sed '1d;$d'
}
while getopts ":hf:v" opt; do
case $opt in
h) show_help; exit 0 ;;
f) FILE=$OPTARG ;;
v) VERBOSE=1 ;;
\?) echo "Неверный флаг: -$OPTARG" >&2; show_help; exit 1 ;;
esac
done
⭐️ Как это работает?
📍 : <<'USAGE' ... USAGE - это многострочный комментарий.
📍 sed -n '/^: <<'\''USAGE'\''/,/^USAGE/p' "$0" - извлекает его.
📍 В show_help() мы красиво выводим только нужный блок.
Теперь ты всегда видишь usage в начале файла - и это единственный источник правды.
BashTex 📱 #bash #utils