Scroll to navigation

GETOPT(1) Корисничке наредбе GETOPT(1)

НАЗИВ

getopt - обрађује опције наредбе (побољшано)

УВОД

getopt optstring parameters

getopt [options] [--] optstring parameters

getopt [options] -o|--options optstring [options] [--] parameters

ОПИС

getopt is used to break up (parse) options in command lines for easy parsing by shell procedures, and to check for valid options. It uses the GNU getopt(3) routines to do this.

Параметри са којима је getopt позван могу да се поделе на два дела: опције које мењају начин на који ће getopt урадити обраду (опције и оптниска у SYNOPSIS-у), и на параметре који ће бити обрађени (параметри у SYNOPSIS-у). Други део ће почети на првом не-опционом параметру који није аргумент опције, или након првог појављивања „--“. Ак се не нађе опција -o или --options у првом делу, први параметар другог дела се користи као ниска кратких опција.

Ако је променљива окружења GETOPT_COMPATIBLE постављена, или ако први параметар није опција (не почиње са -, први формат у SYNOPSIS-у), getopt ће створити излаз који је сагласан са тим или другим издањима getopt(1). Још увек ће мешати параметре и препознати опционалне аргументе (видите одељак САДЕЈСТВЕНОСТ за више о томе).

Традиционалне примене getopt*а(1) нису у стању да се носе са размаком и другим (за шкољку специфичне) специјалним знаковима у аргументима и не-опционим параметрима. Да би се решио овај проблем, ова примена може да генерише цитирани излаз који шкољка још једном мора протумачити (обично коришћењем наредбе *eval). Ово има ефекат очувања тих знакова, али морате позвати getopt на начин који више није сагласан са другим издањима (други или трећи формат у SYNOPSIS-у). Да би се утврдило да ли је ово побољшано издање getopt-а(1) инсталирано, може се користити посебна пробна опција (-T).

ОПЦИЈЕ

-a, --alternative

Допушта дуге опције да почну једним '-'.

-l, --longoptions дуге-опције

Дуге (вишезнаковне) опције за препознавање. Више од једног назива опције може се навести одједном, раздвајањем назива зарезом. Ова опција може бити дата више пута, дуге-опције су збирне. За сваким називом дуге опције у дугим-опцијама може да следи једна двотачка да назначи да има захтеван аргумент, и са две двотачке да назначи да има опционални аргумент.

-n, --name назив-програма

Назив који ће користити getopt(3) рутине када извештавају о грешкама. Знајте да грешке getopt-а(1) се још увек извештавају као да долазе из „getopt“-а.

-o, --options кратке-опције

Кратке (један знак) опције које треба препознати. Ако ова опција није пронађена, први параметар getopt-а који не почиње са - (и није аргумент опције) користи се као ниска кратке опција. За сваким знаком кратке опције у кратким-опцијама може да следи једна двотачка да би се назначило да има потребан аргумент и две двотачке да би се назначило да има опциони аргумент. Први знак кратких опција може бити + или - како би се утицало на начин на који се опције обрађују и стварају излаз (погледајте одељак РЕЖИМИ СКЕНИРАЊА за детаље).

-q, --quiet

Искључује извештавање о грешкама са getopt(3).

-Q, --quiet-output

Не ствара нормалан излаз. О грешкама још увек извештава getopt(3), осим ако такође користите -q.

-s, --shell шкољка

Поставља конвенције цитирања на она шкољке. Ако опција -s није дата, користе се BASH конвенције. Исправни аргументи су тренутно sh bash, csh, и tcsh.

-T, --test

Тестира да ли је ваша getopt(1) то побољшано или старо издање. Ово не производи излаз, и поставља стање грешке на 4. Остале примене getopt-а(1), и овог издања ако је променљива окружења GETOPT_COMPATIBLE постављена, даће „--“ и стање грешке 0.

-u, --unquoted

Не цитира излаз. Знајте да празнине и (од шкољке зависни) знакови могу довести до „havoc“ у овом режиму (као што раде са осталим getopt(1) применама).

-h, --help

Приказује текст помоћи и излази.

-V, --version

Исписује издање и излази.

ОБРАЂИВАЊЕ

Овај одељак наводи формат другог дела параметара getopt-а (параметри у SYNOPSIS-у). Следећи одељак (ИЗЛАЗ) описује излаз који се ствара. Ови параметри су обично параметри са којима се позивала функција шкољке. Мора се водити рачуна да сваки параметар са којим је позвана функција шкољке одговара тачно једном параметру на списку параметара getopt-а (погледајте ПРИМЕРЕ). Сво рашчлањивање обављају Гну getopt(3) рутине.

Параметри се обрађују са лева на десно. Сваки параметар је класификован као кратка опција, дуга опција, аргумент опције, или не-опциони параметар.

Једноставна кратка опција је - за којом следи знак кратке опције. Ако опција има тражени аргумент, може бити написана непосредно после знака опције или као следећи параметар (тј. одвојена размаком на линији наредби). Ако опција има опциони аргумент, мора бити написана непосредно после знака опције ако постоји.

Могуће је навести неколико кратких опција након „-“, све док све (осим могуће последње) немају захтеване или опционалне аргументе.

Дуга опција обично почиње са -- након чега следи назив дуге опције. Ако опција има тражени аргумент, може бити написана непосредно после назива дуге опције, одвојена са =, или као следећи аргумент (тј. одвојена размаком на линији наредби). Ако опција има опциони аргумент, мора бити написана непосредно после назива дуге опције, одвојена са =, ако постоји (ако додате =, али ништа после тога, тумачи се као да нема аргумента; ово је мала грешка, видите ГРЕШКЕ). Дуге опције могу бити скраћене, све док скраћеница није двосмислена.

Сваки параметар који не почиње са -, и није захтевани аргумент претходне опције, јесте не-опциони параметар. Сваки параметар после -- параметра се увек тумачи као не-опциони параметар. Ако је променљива окружења POSIXLY_CORRECT постављена, или ниска кратке опције почиње са +, сви преостали параметри се тумаче као не-опциони параметри одмах чим се нађе први не-опциони параметар.

ИЗЛАЗ

Излаз се ствара за сваки елемент описан у претходном одељку. Излаз се врши истим редоследом као што су елементи наведени на улазу, осим не-опционих параметара. Излаз се може извршити у сагласном (без-навода) режиму, или на такав начин да су размаци и други специјални знакови унутар аргумената и не-опционих параметара сачувани (погледајте ЦИТИРАЊЕ). Када се излаз обради у скрипти шкољке, изгледаће да је састављен од различитих елемената који се могу обрадити један по један (користећи наредбу „shift“ у већини језика шкољке). Ово је несавршено у режиму без наводника, јер се елементи могу поделити на неочекиваним местима ако садрже размак или специјалне знакове.

Ако има проблема приликом обраде параметара, на пример зато што потребан аргумент није нађен или опција није препозната, биће извештено о грешци на стандардној грешци, неће бити излаза за дати елемент, и вратиће се не-нулто стање грешке.

За кратку опцију, један - и знак опције се стварају као један параметар. Ако опција има аргумент, следећи параметар биће аргумент. Ако опција садржи опциони аргумент, али се не нађе ни један, следећи параметар биће створен али ће бити празан у режиму цитирања, али никакав други параметар неће бити створен у нецитираном (сагласном) режиму. Знајте да многе друге примене getopt-а(1) не подржавају опционалне аргументе.

Ако је неколико кратких опција наведено после једног -, свака ће бити присутна у излазу као одвојени параметар.

За дугу опцију, „--“ и пун назив опције се генеришу као један параметар. Ово се уради без обзира да ли је опција скраћена или наведена једним „-“ на улазу. Са аргументима се ради као са кратким опцијама.

Нормално, никакав излаз не-опционих параметара се не ствара док се не створе све опције и њихови аргументи. Тада се -- ствара као један параметар, и након тога не-опциони параметри по редоследу како се нађу, сваки као засебан параметар. Само ако је први знак ниске кратких опција био -, излаз не-опционог параметра се ствара на месту њиховог налажења на улазу (ово није подржано ако се користи први формат SYNOPSIS-а; у том случају сва претходна појављивања - и + се занемарују).

ЦИТИРАЊЕ

У режиму сагласности, размацима или „посебним“ знаковима у аргументима или не-опционим параметрима се не рукује исправно. Пошто се излаз уноси у скрипту шкољке, скрипта не зна како би требало да разбије излаз на засебне параметре. Да би се заобишао овај проблем, ова примена нуди цитирање. Идеја је да се излаз створи са наводницима око сваког параметра. Када се овај излаз још једном унесе у шкољку (обично eval наредбом škoqke), тада се исправно дели на засебне параметре.

Цитирање није укључено ако је променљива окружења GETOPT_COMPATIBLE постављена, ако се први облик SYNOPSIS користи, или ако се нађе опција -u.

Другачије шкољке користе другачије договоре о цитирању. Можете да користите опцију -s' да изаберете шкољку коју користите. Следеће шкољке су тренутно подржане: sh, bash, csh и tcsh. Заправо, разликују се само два „укуса“: sh-слични и csh-слични договори цитирања. Постоје шансе да ако користите неки други језик скрипте шкољке, један од ових укуса и даље може да се користи.

РЕЖИМИ СКЕНИРАЊА

Први знак ниски кратких опција може бити „-“ или „+“ за назначавање специјалног режима скенирања. Ако се користи први облик позивања у SYNOPSIS занемарују се; променљива окружења POSIXLY_CORRECT се и даље испитује.

Ако је први знак „+“, или ако је променљива окружења POSIXLY_CORRECT постављена, обрађивање се зауставља одмах чим се нађе први параметар не-опције (тј., параметар који не почиње са „-“) који није аргумент опције. Преостали параметри се сви тумаче као параметри не-опције.

Ако је први знак „-“, параметри не-опције се исписују на месту на коме су пронађени; у нормалним радњама, сви се прикупљају на крај излаза после стварања „--“ параметра. Знајте да се овај „--“ параметар још увек ствара, али ће увек бити последњи параметар у овом режиму.

САОБРАЗНОСТ

Ово издање getopt-а(1) је написано да буде што је више могуће сагласно са осталим издањима. Обично можете само да их замените овим издањем без икаквих измена, и са неким предностима.

Ако први знак првог параметра „getopt“-а није -, getopt прелази у режим сагласности. Први параметар тумачиће као низ кратких опција, а сви остали аргументи биће обрађени. И даље ће вршити мешање параметара (тј. сви не-опциони параметри се обрађују на крају), осим ако је променљива окружења POSIXLY_CORRECT постављена, у ком случају ће, gezopt сам додати + пре кратке опције.

Променљива окружења GETOPT_COMPATIBLE приморава getopt у режим сагласности. Постављање и ове променљиве окружења и POSIXLY_CORRECT нуди 100% сагласност за „тешке“ програме. Обично, ништа од тога није потребно.

У режиму саобразности, водећи знакови - и + у нискама кратких опција се занемарују.

ПОВРАТНИ КОДОВИ

getopt returns error code 0 for successful parsing, 1 if getopt(3) returns errors, 2 if it does not understand its own parameters, 3 if an internal error occurs like out-of-memory, and 4 if it is called with -T.

ПРИМЕРИ

Скрипте примера за „(ba)sh“ и „(t)csh“ су достављене са getopt(1) дистрибуцијом, и инсталиране су у директоријуму /usr/share/doc/util-linux.

ОКРУЖЕЊЕ

POSIXLY_CORRECT

Ова променљива окружења је испитана getopt(3) рутинама. Ако је постављена, обрада стаје одмах чим се нађе параметар који није опција или аргумент опције. Сви преостали параметри се такође тумаче као не-опциони параметри, без обзира да ли почињу са „-“.

GETOPT_COMPATIBLE

Приморава да getopt користи први формат позивања као што је наведено у SYNOPSIS.

ГРЕШКЕ

getopt(3) can parse long options with optional arguments that are given an empty optional argument (but cannot do this for short options). This getopt(1) treats optional arguments that are empty as if they were not present.

Синтакса ако уопште не желите никакве променљиве кратке опције није баш препознатљива (морате изричито да их поставите на празну ниску).

АУТОР

Frodo Looijaard <frodo@frodo.looijaard.name>

ПОГЛЕДАЈТЕ ТАКОЂЕ

bash(1), tcsh(1), getopt(3)

ПРИЈАВЉИВАЊЕ ГРЕШАКА

За пријављивање грешака, користите пратиоца грешака на <https://github.com/util-linux/util-linux/issues>.

ДОСТУПНОСТ

Наредба getopt је део пакета „util-linux“ који се може преузети са Архиве Линукс кернела <https://www.kernel.org/pub/linux/utils/util-linux/>.

2024-08-05 util-linux 2.40.2