LINUX.ORG.RU

Вопрос по getopts


0

1

Здравствуйте, уважаемые форумчане! Подскажите, пожалуйста, есть ли возможность использовать длинные имена опций (sc. состоящие не из одной буквы)? Например, вместо -h можно использовать --help. Огромная просьба привести исходный код. Пробовал почитать man и образец magicwand (из числа скриптов Image Magick), но вкурить не удалось. Хотелось бы пример попроще. Гугл я спрашивал, но там примеры трудные для меня. Каков, например, скрипт для распознавания опции --output и передачи значения этой опции в $output?

Ответ на: комментарий от adriano32

До Вашего сообщения — нет. Да, для скрипта.

ghostmansd
() автор топика

в getopts нельзя, в getopt можно

ananas ★★★★★
()
Ответ на: комментарий от adriano32

Пока что еще разбираюсь. По Вашему предложению нашел неплохой пример, вроде бы как раз то, что доктор прописал. Пока что не могу только вникнуть, куда передавать переменные? Например, в коде есть строка:

        -b|--bravo)
            bravo=$2
            shift 2
Если у меня есть еще какие-либо переменные, то мне их номера передавать в $3-$15?

ghostmansd
() автор топика
Ответ на: комментарий от ghostmansd

И еще не вполне понятно, что делает

shift 2
. Согласно этой странице, «Команда shift „сдвигает“ позиционные параметры, в результате чего парметры „сдвигаются“ на одну позицию влево». Если мы указываем shift 2, это означает, что сдвиг произойдет на две позиции?

ghostmansd
() автор топика
Ответ на: комментарий от ghostmansd

http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_09_07.html

первые переданные параметры(те что левее) отбрасываются, на их места приходят параметры, что были указаны «правее», номера при этом изменяются на число, переданное shift. Два потому что тебе надо отбросить обработанную пару опция+значение --some-option <value>. Ясно?

adriano32 ★★★
()
Ответ на: комментарий от adriano32

Получается, у нас все время в $1 оказывается опция, а в $2 - ее значение? Т.е. выходит нечто в духе:

        -b|--bravo)
            bravo=$2
            shift 2
            ;;
        -o|--output)
            output=$2
            shift 2
            ;;
        ...
        etc.

ghostmansd
() автор топика
Ответ на: комментарий от ghostmansd

shift до тех пор делать пока аргументы не кончатся. Я это имел в виду.

adriano32 ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.