Записки погромиста

Записки погромиста на вольные темы

Создаем баш скрипт, который принимает именованные параметры

Для создания bash скрипта, который принимает именованные параметры, воспользуемся встроенной командой getopts (это не тоже, что системная команда getopt), которая парсит аргументы, переданные в скрипт.

while getopts ':ab:' opt; do // opt - название переменной, которая содержит переданный аргумент
    case "$opt" in
        a) echo "a found";;
        b) echo "b found and the value is $OPTARG";;
        \?) echo "unknown option";;
    esac
done

shift "$((OPTIND - 1))"

for arg in $@; do
    echo "received arg $arg"
done

В этом скрипте двоеточие перед названием аргумента — :a, говорит о том, что мы будем обрабатывать неизвестные аргументы в скрипте.  А с двоеточием говорит скрипту, что мы также можем передать и значение, например script.sh -a -b 123.

shift — используется в случае, когда количество аргументов неизвестно и удаляет n количество строк из списка параметров, OPTIND — индекс последнего аргумента, поэтому $((OPTIND - 1)) удаляет все параметры, обработанные getopts и переходит к переданному значению.

Теперь можно вызывать скрипт с любым количество аргументов script.sh -a -b foor bar baz etc.

Published by

Оставьте комментарий