Разбор параметров командной строки в Bash

Шаблон для bash-скриптов, разбирающих параметры командной строки. Решение красивое и полезное.

#! /bin/sh
 
USAGE="Usage: `basename $0` [-hv] [-o arg] args"
 
# Разбор параметров командной строки
while getopts hvo: OPT; do
    case "$OPT" in
        h)
            echo $USAGE
            exit 0
            ;;
        v)
            echo "`basename $0` version 0.1"
            exit 0
            ;;
        o)
            OUTPUT_FILE=$OPTARG
            ;;
        \?)
            # getopts вернул ошибку
            echo $USAGE >&2
            exit 1
            ;;
    esac
done
 
# Удаляем обработанные выше параметры
shift `expr $OPTIND - 1`
 
# Здесь мы требуем как минимум один параметр помимо опций
# Удалить блок, если он не требуется
if [ $# -eq 0 ]; then
    echo $USAGE >&2
    exit 1
fi
 
# Доступ к дополнительным параметрам осуществляется через обычные
# переменные $@, $*, $1, $2, и т.д. Или используя этот цикл
for PARAM; do
    echo $PARAM
done
 
# EOF

Для добавления новых параметров прописываем их в параметрах getopt и пропысываем реакцию в case. Если после буквы ключа идёт двоеточие, значит данный ключ требует аргумента.

Запись опубликована в рубрике Пророграммирование с метками , , . Добавьте в закладки постоянную ссылку.