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 назив-програма
-o, --options кратке-опције
-q, --quiet
-Q, --quiet-output
-s, --shell шкољка
-T, --test
-u, --unquoted
-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_COMPATIBLE
ГРЕШКЕ¶
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 |