Применение getopt в Linux

Конспект в доработке

    getopt
    #!/bin/bash #getopt [getopt_options] [--] optstring parameters #getopt_options описывают как разделять аргументы ( одно тире -l или два тире для коротких вариантов опций getopt -l "name:,version::,verbose" -- "n:v::V" ) #опции getop могут иметь значение или не иметь значения # : Двоеточие после опции означает, что для опции требуется аргумент # :: Двойное двоеточие означает, что для опции требуется необязательные аргумент, между опцией и значением не должно быть пробела -t123 #$OPTSTRING - список аргументов #$OPTARG содержит значение текущего аргумента while getopts ":s:u:t:n:l:h" opt; do case "$opt" in s ) echo "$OPTARG" ;; u ) echo "$OPTARG" ;; t ) echo "$OPTARG" ;; n ) echo "$OPTARG" ;; l ) echo "$OPTSTRING" ;; h ) echo "HELP" ;; * ) echo "HELP" ;; esac done
    getopts

    getopts - инструмент для разбора аргументов. Это встроенная команда Bash, но имеется и ее "внешний" аналог /usr/bin/getopt
    С командой getopts очень тесно взаимосвязаны скрытые переменные. $OPTIND -- указатель на аргумент (OPTion INDex) и $OPTARG (OPTion ARGument) -- дополнительный аргумент опции. Символ двоеточия, следующий за именем опции, указывает на то, что она имеет дополнительный аргумент. Обычно getopts упаковывается в цикл while, в каждом проходе цикла извлекается очередная опция и ее аргумент (если он имеется), обрабатывается, затем уменьшается на 1 скрытая переменная $OPTIND и выполняется переход к началу новой итерации
    Команда getopts парсит короткие опции, которые начинаются с одного дефиса (-), за которым идет буква или цифра. Примеры коротких опций: -2, -d и -D. Она также может парсить комбинации коротких опций, например -2dD (это то же самое, как три одновременно указанные опции -2, -d и -D).
    Предположим, что вам нужно для опций -a и -Z обрабатывать аргументы. Для этого после символа опций указывают двоеточие (:), например:
    getopts "a:pZ:" optname


    Начальное объявление:
    while getops ":abcde:fg" Option
    a, b, c, d, e, f, g -- это возможные опции (ключи)
    Символ : после опции 'e' указывает на то, что с данной опцией может идти дополнительный аргумент
    do
    case $Option in
    a ) # Действия, предусмотренные опцией 'a'.
    b ) # Действия, предусмотренные опцией 'b'.
    ...
    e) # Действия, предусмотренные опцией 'e', а так же необходимо обработать $OPTARG,
    # в которой находится дополнительный аргумент этой опции.
    ...
    g ) # Действия, предусмотренные опцией 'g'.
    esac
    done
    shift $(($OPTIND - 1))
    # Перейти к следующей опции.

    #!/bin/bash while getopts ":abc:fg" options; do case ${options} in a ) echo "Опция a отработала" ;; b ) echo "Опция b отработала" ;; c ) ls -la ${OPTARG}; echo "Опция c отработала" ;; esac done ./test.sh -ab -c test.sh Опция a отработала Опция b отработала -rwxrwxr-x 1 chich chich 258 авг 26 12:02 test.sh Опция c отработала
    Источники
    Последнее изменение: 06.10.2024 22:24


    Связанные темы

    Команда exec linux

    Использование команды tee в Linux

    Язык shell в Linux

    Библиотеки Linux

    Использование md5sum

    Использование wget и curl в Linux

    Команда chattr и lsattr в Linux

    Использование awk Linux Alpine

    Использование sed в Linux

    Переменные окружения в Linux

    Блокировка пользователя в Linux

    Классы символов в Linux

    Использование tar в Linux

    Подстановка имен файлов

    Проверка на необходимость перезапуска после обновления пакетов

    Стандартные потоки и перенаправление ввода/вывода в Linux

    Функции в языке Shell

    Использование grep в Linux

    Архивирование и сжатие файлов в Linux

    Использование find Linux

    Права пользователей и групп

    Полезные команды и скрипты Linux

    Переменные в Linux

    Условная конструкция if в Linux

    Использование grep в Linux

    Использование xargs в Linux

    Фигурные скобки в bash

    Циклы в языке shell

    Использование оператора select в языке shell

    Внутренние и внешние команды linux

    Использование конструкции case в Linux

    Подстановка команд в Linux

    Мониторинг системы Linix с помощью getconf

    Использование ANCI последовательностей в Linux

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

    Авторизоваться
    Я буду рекламой
    Я тоже буду рекламой
    И я
    ВВЕРХ