Сх - Линук Цомманд - Уник команда

НАМЕ

басх - ГНУ Боурне-Агаин СХелл

СИНОПСИС

басх [опције] [датотека]

ОПИС

Басх је сх- компатибилан преводилац превода који извршава команде прочитане са стандардног уноса или из датотеке. Басх такође укључује корисне функције из Корн и Ц схеллс ( ксх и цсх ).

Басх је намијењен за усклађивање имплементације спецификације ИЕЕЕ ПОСИКС Схелл и Тоолс (ИЕЕЕ Воркинг Гроуп 1003.2).

ОПЦИЈЕ

Поред опција једноструких знакова документованих у опису подешене уграђене команде, басх тумачи следеће опције када се позову:

стринг

Ако је опција присутна, онда се команде читају из стринга . Ако постоје аргументи после стринга , они се додељују позицијским параметрима, почевши од $ 0 .

Ако је опција присутна, схелл је интерактиван .

Урадите басх чин као да се позива као шаблон за пријављивање (погледајте ИНВОЦАТИОН испод).

Ако је опција присутна, схелл постаје ограничен (погледајте РЕСТРИЦТЕД СХЕЛЛ испод).

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

Списак свих двоструких цитата преписаних од стране $ је одштампан на стандардном опцији. То су стрингови који подлежу превођењу језика када тренутни језик није Ц или ПОСИКС . Ово подразумева опцију ; ниједна команда неће бити извршена.

[- +] О [ схопт_оптион ]

схопт_оптион је једна од опција за љуске прихваћене од стране продавнице (погледајте СХЕЛЛ БУИЛТИН ЦОММАНДС испод). Ако је схопт_оптион присутан, поставља вриједност те опције; + О га уноси. Ако схопт_оптион није испоручен, имена и вриједности опција које су прихваћене од схопт-а се штампају на стандардном излазу. Ако је опција за позивање + О , излаз се приказује у формату који се може поново користити као улаз.

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

Басх такође тумачи низ више карактерних опција. Ове опције се морају појавити у командној линији пре него што се препознају опције са једним знаком.

-думп-по-стрингс

Еквивалентно , али је излаз у формату датотеке ГНУ геттект по (портабле објецт).

-думп-стрингс

Еквивалентно .

--помоћ

Приказујте поруку о коришћењу на стандардном излазу и изађите успешно.

--инит-фајл датотека

--рцфиле фајл

Извршите наредбе из датотеке уместо стандардне датотеке личне иницијализације ~ / .басхрц ако је схелл интерактивна (погледајте ИНВОЦАТИОН испод).

--Пријавите се

Еквивалентно .

- уједињење

Не користите библиотеку читања ГНУ-а за читање командних линија када је љуска интерактивна.

--нопрофиле

Немојте читати системску датотеку за покретање / етц / профиле или било коју од личних иницијалних датотека ~ / .басх_профиле , ~ / .басх_логин , или ~ / .профиле . По дефаулту, басх чита ове датотеке када се позивају као схелл схелл (погледајте ИНВОЦАТИОН испод).

--Норц

Немојте читати и извршити лични фајл за иницијализацију ~ / .басхрц ако је схелл интерактивна. Ова опција је подразумевано укључена ако се схелл користи као сх .

--посик

Промените понашање басх-а где се подразумевана операција разликује од стандарда ПОСИКС 1003.2 у складу са стандардним ( посик мод ).

--ограничен

Шоку постаје ограничено (погледајте РЕСТРИЦТЕД СХЕЛЛ испод).

-рпм-захтева

Израдите листу датотека које су потребне за покретање скрипте. Ово подразумева '-н' и подлеже истим ограничењима као и провјеру провере грешака времена компајлирања; Бацктицкс, [] тестови и евали нису раздвојени тако да се неке зависности могу пропустити. --вербосе Еквивалентно .

- верзија

Покажите информације о верзији за ову инстанцу басх на стандардном излазу и излазите успешно.

АРГУМЕНТИ

Ако се аргументи остану након обраде опције, а ниједна опција нити није дата, први аргумент се сматра називом датотеке која садржи команде схелл-а. Ако се басх користи на овај начин, $ 0 је постављено на име датотеке, а положајни параметри су постављени на преостале аргументе. Басх чита и извршава команде из ове датотеке, а затим излази. Башов статус изласка је статус изласка последње команде извршене у скрипту. Ако ниједна команда није извршена, статус излаза је 0. Покушајте прво отворити датотеку у тренутном директоријуму, а ако се не пронађе датотека, онда ће схелл претраживати директоријуме у ПАТХ- у за скрипту.

ИНВОЦАТИОН

Шаблон за пријаву је онај чији је први карактер нула аргумента - , или је он започео са опцијом --логин .

Интерактивна љуска је она која се покреће без аргумената без опције и без опције чији стандардни улаз и излаз су спојени на терминале (као што је утврђено изатитом (3)), или један је започео са опцијом. ПС1 је подешен и $ - укључује и ако је басх интерактиван, дозвољавајући скрипту или почетну датотеку да тестира ово стање.

Следећи параграфи описују како басх извршава своје стартуп датотеке. Ако било која од датотека постоји, али не може се прочитати, басх пријави грешку. Тилдови су проширени у имена датотека како је описано испод под Тилде Екпансион у одељку ЕКСПАНСИОН .

Када се басх позива као интерактивна шифра за пријављивање или као неинтерактивна љуска са опцијом --логин , најпре чита и извршава команде из датотеке / етц / профиле , ако та датотека постоји. После читања те датотеке, тражи ~ / .басх_профиле , ~ / .басх_логин и ~ / .профиле , у том редоследу и чита и извршава команде од првог који постоји и може се читати. Опција -нопрофиле се може користити када је схелл почела да спречава ово понашање.

Када излази из лога за пријаву, басх чита и извршава команде из датотеке ~ / .басх_логоут , ако постоји.

Када се започне интерактивна љуска која није схелл логин, басх чита и извршава команде из ~ / .басхрц , ако та датотека постоји. Ово се може инхибирати употребом опције --норц . Опција --рцфиле фајл ће примити басх да прочита и извршава наредбе из датотеке уместо ~ / .басхрц .

Када се басх започе неинтерактивно, ради покретања скрипти, на примјер, тражи варијаблу БАСХ_ЕНВ у окружењу, проширује своју вриједност ако се тамо појављује и користи проширену вриједност као име датотеке за читање и извршавање . Басх се понаша као да је извршена следећа команда:

ако [-н "$ БАСХ_ЕНВ"]; онда . "$ БАСХ_ЕНВ"; фи

али вредност променљиве ПАТХ не користи се за претраживање имена датотеке.

Ако се басх позове са им сх , покушава имитира почетно понашање историјских верзија сх што је могуће ближе, док је у складу са ПОСИКС стандардом. Када се позива као интерактивна шифра за пријављивање или неинтерактивна љуска са опцијом --логин , најпре покушава да прочита и извршава команде из / етц / профиле и ~ / .профиле , у том редоследу. Опција -нопрофиле се може користити за спречавање овог понашања. Када се позива као интерактивна љуска са именом сх , басх тражи варијаблу ЕНВ , шири своју вриједност ако је дефинирана, а проширену вриједност користи као име датотеке за читање и извршење. С обзиром да се схелл позива као сх , не покушава да прочита и извршава наредбе из било које друге датотеке за покретање, опција --рцфиле нема ефекта. Неинтерактивна љуска позвана с именом сх не покушава да прочита било коју другу датотеку за покретање. Када се позове као сх , басх улази у режим посик након читања датотека за покретање.

Када се басх покреће у режиму позиције , као и са опцијом командне линије --посик , следи ПОСИКС стандард за покретне датотеке. У овом режиму, интерактивне шкољке проширују ЕНВ варијаблу и команде се читају и извршавају из датотеке чије је име проширена вриједност. Нема других датотека за покретање.

Басх покушава да одреди када га покреће удаљени серверски сервер, обично рсхд . Ако басх одреди да га покреће рсхд , чита и извршава команде из ~ / .басхрц , ако та датотека постоји и може се читати. То неће учинити ако се позове као ш . Опција --норц се може користити за инхибирање овог понашања, а опција -рцфиле се може користити да би се сила друга датотека за читање, али рсхд генерално не позива љуску са тим опцијама или не дозвољава да се оне специфицирају.

Ако је љуска започета са ефективним корисничким (групним) ид-ом који није једнак ИД-у стварног корисника (групе), а опција -п није испоручена, никакве датотеке за читање нису прочитане, функције схелл-а нису наслеђене из околине, СХЕЛЛОПТС варијабла, ако се она појави у окружењу, занемарује се, а ефективан кориснички ИД је постављен на стварни кориснички ИД. Ако је опција -п испоручена при позиву, понашање при покретању је исто, али ефективни кориснички ИД се не ресетује.

ДЕФИНИЦИЈЕ

Следећи дефиниције се користе у целом остатку овог документа.

празно

Простор или таб.

реч

Низ знакова који се сматра појединачном јединицом од стране љуске. Познат и као токен .

име

Реч која се састоји само од алфанумеричких знакова и подчртава, а почиње са абецедним знаком или подчетком. Такође се назива и идентификатор .

метацхарацтер

Карактер који, када некоцификован, одваја ријечи. Једно од следећих:

| &; () <> простор таб

контролни оператор

Токен који врши контролну функцију. То је један од следећих симбола:

|| & &&; ;; () | <невлине>

РЕЗЕРВИСАНЕ РЕЧИ

Резервисане речи су речи које имају посебно значење за љуску. Следеће речи су препознате као резервисане када се не котирају и нека прва реч једноставне команде (погледајте СХЕЛЛ ГРАММАР испод) или трећу реч случаја или за наредбу:

! случај уради елиф друго есац фи за функцију ако је у одјељку док не дођете док {} време [[]]

СХЕЛЛ ГРАММАР

Једноставне команде

Једноставна команда је секвенца опционих задатака, праћена празним - раздвојеним ријечима и редирекцијама, а завршава их контролни оператер . Прва реч специфицира команду која се извршава и која се преноси као аргумент нула. Преостале речи се преносе као аргументи за позвани команду.

Повратна вредност једноставне команде је његов излазни статус или 128 + н ако је команда прекинута сигналом н .

Цевоводи

Цевовод је низ једне или више команди раздвојених знаком . Формат за гасовод је:

[ време [ -п ]] [! ] наредба [ | цомманд2 ...]

Стандардни излаз команде се преко цеви повезује на стандардни улаз команде2 . Ова веза се извршава пре било каквих преусмеравања које је одредила команда (погледајте РЕДИРЕЦТИОН испод).

Ако резервисана реч ! претходи цевоводу, статус излаза за тај гасовод је логична НОТ статуса из задње наредбе. У супротном, статус плиновода је статус излаза последње команде. Шкорање чека све команде у цјевоводу да се прекину пре враћања вредности.

Ако резервисана реч претходи времену претходи цевоводу, проток, као и корисничко и системско вријеме које се троши по његовом извршењу, пријављују се када се цевовод заврши. Опција -п мења излазни формат на онај који је одредио ПОСИКС. ТИМЕФОРМАТ варијабла се може поставити на низ стрингова формата који одређује како треба приказати информације о времену; погледајте опис ТИМЕФОРМАТ испод Схелл Вариаблес испод.

Свака наредба у цјевоводу се извршава као посебан процес (тј. У подсклопу).

Листе

Листа је низ једне или више цевовода одвојених од једног од оператора ; , & , && , или || , и опционо прекинута са једним од ; , & , или <невлине> .

Од ових оператора листе, && и || имају исти приоритет, а затим следе ; и &, који имају једнака предност.

Низ једне или више нових линија може се појавити на листи умјесто тачке и тачке за раздвајање команди.

Ако команду прекине оперативни контролер & , схелл извршава команду у позадини у подсклопу. Шоку не чека да команда заврши, а статус повратка је 0. Команде одвојене од а ; се извршавају секвенцијално; шкољка чека сваку наредбу да се оконча. Повратни статус је статус излаза последње извршене команде.

Контролни оператори && и || означавају АНД листе и ОР листе, респективно. Листа АНД АНД има облик

цомманд1 && цомманд2

цомманд2 се извршава ако и само ако команда1 враћа статус излаза нуле.

Листа ОР је у облику

цомманд1 || цомманд2

цомманд2 се извршава ако и само ако команда1 враћа статус нуле који није нула. Повратни статус листе АНД и ОР је статус излаза последње команде извршене на листи.

Командне команде

Комбинована команда је једна од следећих:

( листа )

листа се извршава у подсклопу. Додјеле варијабли и уграђене команде које утичу на окружење схелл-а не остану на снази након што команда заврши. Повратни статус је статус излаза листе .

{ лист ; }

листа се једноставно извршава у тренутном схелл окружењу. листа мора бити прекинута новом линијом или тачком и тачка-тачкама. Ово је познато као групна команда . Повратни статус је статус излаза листе . Имајте на уму да су за разлику од мета-карактера ( и ) , { и } резервисане речи и морају се десити тамо где је резервисана реч дозвољена да буде препозната. Пошто не узрокују паузу ријечи, морају бити одвојене са листе сличним простором.

(( израз ))

Израз се процењује према правилима описаним доле под АРИТМЕТИЧком ЕВАЛУАЦИЈОМ . Ако је вредност израза нула, повратни статус је 0; у супротном је статус повратка 1. То је управо еквивалентно пустити " израз ".

[[ израз ]]

Вратите статус од 0 или 1 у зависности од процене израза условне експресије . Изрази се састоје од примарних параметара описаних доле под ПОЈЕДИНСКИМ ПРИКАЗОМ . Раздвајање речи и проширење путање се не изводе на речи између [[ и ]] ; проширење тилде, параметар и варијабилна експанзија, аритметичка експанзија, супституција команде, замјена процеса и уклањање цитата.

Када се користе оператори == и ! = , Низ десно од оператора сматра се шемом и упарен је према правилима описаним доле под Упоредивањем узорака . Повратна вредност је 0 ако се стринг поклапа или не одговара образцу, респективно и 1 у другом случају. Сваки део шаблона може бити цитиран да би га примијенио као низ.

Изрази се могу комбиновати помоћу сљедећих оператора, наведених у редоследу приоритета:

( израз )

Враћа вредност израза . Ово се може користити за превазилажење нормалне предности оператора.

! израз

Истина ако је израз неисправан.

екпрессион1 && екпрессион2

Истина је ако су и израз1 и израз2 тачни.

екпрессион1 || екпрессион2 Труе ако је израз1 или израз2 тачан.

Тхе && анд || оператери не процењују израз2 ако је вриједност израза 1 довољна да одреди повратну вриједност читавог условног израза.

за име [ у речи ]; уради списак ; Готово

Списак речи који следи је проширен, генеришући листу ставки. Име променљиве је постављено на сваки елемент ове листе, а листа се извршава сваки пут. Ако је ријеч изостављена, команда за наредбу извршава листу једном за сваки постављени параметар који је постављен (погледајте ПАРАМЕТРИ испод). Повратни статус је статус излаза последње команде која се извршава. Ако проширење ставки које следи у резултатима празне листе, не извршавају се никакве команде, а статус повратка је 0.

за (( екпр1 ; екпр2 ; екпр3 )); уради списак ; Готово

Прво, аритметички израз екпр1 се процењује према правилима описаним доле под АРИТМЕТИЧком ЕВАЛУАЦИЈОМ . Аритметички израз екпр2 затим се процењује поновљено док се не процени на нулу. Сваки пут, екпр2 процењује на нулту вриједност, списак се извршава и аритметички израз екпр3 се оцјењује. Ако је неки израз изостављен, он се понаша као да оцењује на 1. Повратна вриједност је статус излазне задње наредбе у листи која се извршава или је лажна ако је неки од израза неважећи.

изаберите име [ у речи ]; уради списак ; Готово

Списак речи који следи је проширен, генеришући листу ставки. Скуп проширених речи је одштампан на стандардној грешци, од којих сваки претходи број. Ако је ријеч изостављена, параметри положаја се штампају (погледајте ПАРАМЕТРИ испод). Затим се прикаже ПС3 позив и чита се са стандардног улаза. Ако се линија састоји од броја који одговара једној од приказаних речи, тада је вредност имена постављена на ту реч. Ако је линија празна, речи и позив се поново приказују. Ако је ЕОФ прочитан, команда се завршава. Свака друга процјена вриједности доводи до тога да је име постављено на нулл. Читање линије се чува у варијанти РЕПЛИ . Листа се извршава након сваке селекције све док се не изврши наредба за паузу . Статус изласка излаза је статус излаза последње команде извршене у листи или нула ако нису извршене наредбе.

случајна ријеч у [[(] паттерн [ | паттерн ]

Команда случаја прво шири ријеч и покушава да се подудара са сваком шаблоном заузврат, користећи исте правила подударања као и за проширење путање (погледајте Разширење путање испод). Када се пронађе меч, извршава се одговарајућа листа . После првог меча се не покушавају ништа слиједити. Статус изласка је нула ако се не поклапа са узорком. У супротном, то је статус излаза последње команде извршене на листи .

ако је листа ; затим списак; [ елиф листа ; затим списак ; ] ... [ другу листу ; ] фи

Ако је листа извршена. Ако је статус изласка нула, онда се изврши тада листа . У супротном, свака елиф листа се извршава заузврат, а ако је њен излазни статус нула, одговарајућа тада листа се извршава и команда се заврши. Иначе, друга листа се извршава, ако је присутна. Статус изласка је статус излаза последње извршене команде, или нула ако ниједан услов није тестиран.

док листе ; уради списак ; Готово

до листе ; уради списак ; Готово

Команда вхиле вхиле непрекидно извршава листу докумената све док задња команда у листи враћа статус излаза нуле. Док наредба није идентична команди вхиле док је тест негиран; листа се извршава све док задња команда у листи враћа стање нуле. Стање излазног времена и док су наредбе је статус излаза извршене задње наредбе за извршавање, или нула ако ниједно није извршено.

[ функција ] име () { листа ; }

Ово дефинира функцију под именом . Тело функције је листа команди између {и}. Ова листа се извршава кад год је име назначено као име једноставне команде. Статус излаза функције је статус излаза последње команде извршене у тијелу. (Погледајте ФУНКЦИЈЕ испод.)

КОМЕНТАРИ

У не-интерактивној школи или интерактивној школи у којој је укључена опција интерацтиве_цомментс до уграђеног схопа (погледајте испод СХЕЛЛ БУИЛТИН ЦОММАНДС ), реч која почиње са # узрокује да се ова реч и сви остали знакови на тој линији игноришу. Интерактивна љуска без омогућене опције интерацтиве_цомментс не допушта коментаре. Интерацтиве_цомментс опција је подразумевано укључена у интерактивне љуске.

КУОТИНГ

Цитирање се користи да уклони посебно значење одређених знакова или речи у љуску. Цитирање се може користити за онемогућавање посебног третмана специјалних знакова, како би се спречиле препознати резервисане ријечи као такве, као и да се спречи ширење параметара.

Сваки од метачких знакова који су горе наведени под ДЕФИНИТИОНС има посебно значење за љуску и мора се цитирати ако се представља.

Када се користе објекти за проширење историје историје, карактер историје историје , обично ! , мора бити цитирана да би се спречило ширење историје.

Постоје три механизма цитирања: бежични знак , појединачни цитати и двоструки наводници.

Непотписана бацксласх ( \ ) је знак за избјегавање . Он чува дословну вредност следећег карактера који следи, изузев <невлине>. Ако се појави пар \ <невлине>, а бацксласх се не цитира, \ <невлине> се третира као наставак линије (тј. Уклања се из улазног тока и ефикасно се занемарује).

Приложени знакови у појединачним цитатима чувају дословну вредност сваког карактера унутар цитата. Појединачни цитат се можда не појављује између појединачних цитата, чак и када је претходно обрнуто.

Приложени знакови у двоструким наводницима чувају добру вриједност свих знакова унутар цитата, са изузетком $ , ` , и \ . Ликови $ и ' задржавају своје посебно значење у двоструким наводницима. Бацксласх задржава своје специјално значење само ако следи један од следећих знакова: $ , ` , " , \ или <невлине> . Двоструки цитат може бити цитиран у двоструким наводницима, претећи га са бацксласх-у.

Посебни параметри * и @ имају посебно значење када су у двоструким наводницима (види ПАРАМЕТРИ испод).

Речи обрасца $ стринг су третиране посебно. Реч проширује се у стринг , а знакови са избегнутим обрнутим словима се замењују у складу са АНСИ Ц стандардом. Бацксласх есцапе секуенцес, ако су присутни, се декодирају на следећи начин:

\ а

упозорење (звоно)

\ б

бацкспаце

\ е

знак бекства

\ ф

облик хране

\ н

Нова линија

\ р

превоз Повратак

\ т

хоризонтал таб

\ в

вертикални табулатор

\\

бацксласх

\ '

појединачни цитат

\ ннн

осмогодишњи карактер чија је вредност октална вредност ннн (једна до три цифре)

\ к ХХ

осмогодишњи карактер чија је вриједност хексадецимална вриједност ХХ (једна или двије хекс цифре)

\ ц к

контролни знак

Проширени резултат је појединачан, као да знак за долар није био присутан.

Двоструки низ који претходи знаку долара ( $ ) ће довести до тога да се стринг преведе према тренутном језику. Ако је тренутни локалитет Ц или ПОСИКС , знак за долар се занемарује. Ако је низ преведен и замењен, замена је двострука.

ПАРАМЕТРИ

Параметар је ентитет који чува вредности. То може бити име , број или један од специјалних знакова који су наведени испод у одељку Специал Параметерс . За сврхе шкољке, варијабла је параметар означен именом . Варијабла има вриједност и нула или више атрибута . Атрибути се додељују помоћу команде децларе буилтин (погледајте доле наведену у СХЕЛЛ БУИЛТИН ЦОММАНДС).

Параметар је подешен ако му је додијељена вриједност. Нула стринг је важећа вриједност. Једном када је постављена варијабла, она се може искључити само помоћу унсет-а уграђене команде (погледајте СХЕЛЛ БУИЛТИН ЦОММАНДС испод).

Варијабле се може додијелити изјавом о обрасцу

наме = [ вредност ]

Ако вредност није дата, променљива се додељује нултом низу. Све вредности подлежу експанзији тилде, параметру и варијабилни експанзији, замени команди, аритметичком експанзији и уклањању цитата (погледајте ЕКСПАНСИОН испод). Ако варијабла има свој скупни атрибут, онда вриједност подлеже аритметичком експанзији чак и ако се експанзија $ ((...)) не користи (погледајте Аритметички проширење испод). Раздвајање речи се не врши, изузев "$ @" као што је објашњено у даљем тексту под Посебним параметрима . Проширење путање није извршено. Изјаве о додељивању могу се појавити и као аргументи декларације , ставке , извоза , реадонли- а и локалних уграђених команди.

Позицијски параметри

Позицијски параметар је параметар који се означава једним или више цифара, осим једне једне цифре 0. Позицијски параметри се додељују из аргумената љуске када се позивају и могу се поново распоредити помоћу постављене уграђене команде. Позицијски параметри се не смеју додељивати изјавама додјеле. Позицијски параметри се привремено замењују када се изврши шоља (погледајте ФУНКЦИЈЕ испод).

Када се параметар позиције који се састоји од више од једне цифре проширује, мора бити затворен у носачима (види ЕКСПАНСИОН испод).

Посебни параметри

Шарка посебно третира неколико параметара. Ови параметри могу се референцирати само; додељивање њима није дозвољено.

*

Проширује се на позицијске параметре, почевши од једног. Када се експанзија одвија у оквиру двоструких наводника, она се шири на једну реч са вредностом сваког параметра одвојеног првим карактером ИФС посебне варијабиле. То значи да је " $ * " еквивалентан " $ 1 ц $ 2 ц ... ", гдје је ц први карактер вриједности ИФС варијабле. Ако ИФС није подешен, параметри су раздвојени размацима. Ако је ИФС нула, параметри су спојени без интервенирања сепаратора.

@

Проширује се на позицијске параметре, почевши од једног. Када се експанзија јавља у двоструким наводницима, сваки параметар се шири на посебну реч. То значи да је " $ @ " еквивалентан " $ 1 " " $ 2 " ... Када нема позицијских параметара, " $ @ " и $ @ се шире на ништа (тј. Уклањају се).

#

Проширује се на број позицијских параметара у децималном броју.

?

Проширује се у статус најновије изведеног плиновода у предњем плану.

-

Проширује се на тренутне заставе опција како је наведено на позиву, по задатом уграђеном команду или онима које је поставила сам схелл (као што је опција ).

$

Проширује се у ИД процеса оквира. У () подгрупи се шири на ИД процеса тренутне љуске, а не подгрупе.

!

Проширује се у ИД процеса задње извршене позадине (асинхрони) наредбе.

0

Проширује се на име схелл или скрипти. Ово је постављено на иницијализацију љуске. Ако је басх позван са датотеком команди, $ 0 је постављено на име те датотеке. Ако басх започне са опцијом , онда је $ 0 постављено на први аргумент након што се низ изврши, ако је присутан. У супротном, постављено је на име датотеке које се користи за позивање басх-а , као што је дата нула аргумента.

_

Приликом покретања схелл-а, поставите на апсолутно име датотеке скрипте или скрипте која се извршава као што се преноси у листи аргумената. Након тога, проширује се на последњи аргумент претходне наредбе. Такође поставите на пуни назив датотеке сваке команде извршене и постављене у окружење извојено у ту команду. Када проверавате пошту, овај параметар садржи име поштанске датотеке која се тренутно проверава.

Схелл Вариаблес

Следеће варијабле поставља љуска:

БАСХ

Проширује се у пуно име датотеке које се користи за позивање ове инстанце басх-а .

БАСХ_ВЕРСИНФО

Читав низ варијабли чији чланови садрже информације о верзији за ову инстанцу басх-а . Вредности додељене члановима поља су следеће:

БАСХ_ВЕРСИНФО [ 0]

Главни број верзије ( издање ).

БАСХ_ВЕРСИНФО [ 1]

Мали број верзије ( верзија ).

БАСХ_ВЕРСИНФО [ 2]

Ниво патцха.

БАСХ_ВЕРСИНФО [ 3]

Изграђена верзија.

БАСХ_ВЕРСИНФО [ 4]

Статус издања (нпр. Бета1 ).

БАСХ_ВЕРСИНФО [ 5]

Вредност МАЦХТИПЕ-а .

БАСХ_ВЕРСИОН

Проширује се у низ који описује верзију ове инстанце басх-а .

ЦОМП_ЦВОРД

ЦОМП_ЛИНЕ

Тренутна командна линија. Ова варијабла је доступна само у функцијама схелл-а и екстерним командама на које се могу програмирати објекти за завршетак (погледајте Программабле Цомплетион испод).

ЦОМП_ПОИНТ

ЦОМП_ВОРДС

Варијабла низова (погледајте Низове испод) који се састоје од појединачних речи у тренутној командној линији. Ова варијабла је доступна само у функцијама шкољке које се позивају помоћу програмабилних објеката за завршетак (погледајте Программабле Цомплетион испод).

ДИРСТАЦК

Спољна варијабла (погледајте низови испод) који садрже тренутни садржај стацк директоријума. Директори се појављују у стацку у редоследу који приказују дирс буилтин. Додјељивање чланова ове варијабли арраи може се користити за модификовање директорија већ у стацку, али пусхд и попд уграђени морају бити кориштени за додавање и уклањање директорија. Додјела овој варијабли неће промијенити тренутни директориј. Ако је ДИРСТАЦК неисправан, губи се његова посебна својства, чак и ако се накнадно ресетује.

ЕУИД

Проширује се на ефективан кориснички ИД тренутног корисника, иницијализованог при покретању шкољке. Ова варијабла је само за читање.

ФУНЦНАМЕ

Име било које функције која се тренутно извршава. Ова варијабла постоји само када се извршава шоља функција. Задаци ФУНЦНАМЕ- а немају ефекта и враћају статус грешке. Ако је ФУНЦНАМЕ неисправан, губи се посебна својства, чак и ако је накнадно ресетован.

ГРОУПС

Варијабла низова која садржи листу група чији је тренутни корисник члан. Задаци ГРОУПС- а немају ефекта и враћају статус грешке. Ако ГРОУПС није подешен, губи се посебна својства, чак и ако се накнадно ресетује.

ХИСТЦМД

Број историје или индекс у листи историје тренутне команде. Ако је ХИСТЦМД неискључен , губи се његова посебна својства, чак и ако се накнадно ресетује.

ХОСТНАМЕ

Аутоматски поставите на име тренутног хоста.

ХОСТТИПЕ

Аутоматски поставите на низ који јединствено описује врсту машине на којој се басх изводи. Подразумевана вредност зависи од система.

ЛИНЕНО

Сваки пут када се овај параметар односи, схелл замењује децимални број који представља тренутни секвенцијални број линије (почевши од 1) унутар скрипте или функције. Када није у скрипту или функцији, загарантована вриједност није гарантована. Ако је ЛИНЕНО неисправан, губи се посебна својства, чак и ако се накнадно ресетује.

МАЦХТИПЕ

Аутоматски је постављен на низ који у потпуности описује тип система на којем басх изводи, у стандардном формату ГНУ цпу-цомпани-систем . Подразумевана вредност зависи од система.

ОЛДПВД

Претходни радни директориј који је поставио команда цд .

ОПТАРГ

Вредност последњег аргумента опције коју је процесирао гетоптс буилтин наредба (погледајте СХЕЛЛ БУИЛТИН ЦОММАНДС испод).

ОПТИНД

Индекс следећег аргумента који треба обрадити помоћу гетоптс буилтин наредбе (погледајте СХЕЛЛ БУИЛТИН ЦОММАНДС испод).

ОСТИПЕ

Аутоматски је постављен на низ који описује оперативни систем на којем басх извршава. Подразумевана вредност зависи од система.

ПИПЕСТАТУС

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

ППИД

Идентификатор процеса родитеља љуске. Ова варијабла је само за читање.

ПВД

Тренутни радни директориј постављен командом цд .

РАНДОМ

Сваки пут када се користи овај параметар, генерише се случајни цијели број од 0 до 32767. Низ случајних бројева може се иницијализирати додељивањем вриједности РАНДОМ-у . Ако је РАНДОМ неисправан, губи се његова посебна својства, чак и ако се накнадно ресетује.

ОДГОВОРИТИ

Поставите на линију уноса која је прочитана од стране читања изграђене команде када се не добију аргументи.

СЕЦОНДС

Сваки пут када се користи овај параметар, број секунди од тренутка враћања позива се враћа. Ако је вредност додељена СЕЦОНДС-у , вредност која се враћа након следећих референци је број секунди од задатка плус додељена вриједност. Ако СЕЦОНДС није подешен, губи се посебна својства, чак и ако се накнадно ресетује.

СХЕЛЛОПТС

Листа одвојених листова опција омогућених шкољки. Свака реч у листи је валидан аргумент за опцију за подешену уграђену команду (погледајте СХЕЛЛ БУИЛТИН ЦОММАНДС испод). Опције које се појављују у СХЕЛЛОПТС су оне о којима се пријављује сет -о . Ако је ова варијабла у окружењу кад започне басх , свака лупа опција на листи ће бити омогућена пре читаоца свих датотека за покретање. Ова варијабла је само за читање.

СХЛВЛ

Повећава се по један сваки пут када се покрене инстанца басх- а.

УИД

Проширује се на кориснички ИД тренутног корисника, иницијализованог при покретању шкољке. Ова варијабла је само за читање.

Шупљина користи следеће варијабле. У неким случајевима, басх додељује подразумевану вредност променљивој; ови случајеви су наведени у наставку.

БАСХ_ЕНВ

Ако је овај параметар постављен када басх извршава схелл скрипту, његова вриједност се тумачи као назив датотеке који садржи команде за иницијализацију схелл-а, као у ~ / .басхрц . Вредност БАСХ_ЕНВ подлеже експанзији параметара, замени команди и аритметичком експанзији пре него што се тумачи као име датотеке. ПАТХ се не користи за претраживање резултирајуће име датотеке.

ЦДПАТХ

Путања за претрагу за команду цд . Ово је листа директорија у коме се налази директоријум, у којем схелл тражи одредишне директоријуме специфициране командом цд . Вредност узорка је ".: ~: / Уср".

ЦОЛУМНС

Користи се из команде селецт буилтин за одређивање ширине терминала при штампању листе селекције. Аутоматски се постави по пријему СИГВИНЦХ-а.

КОМПОНЕНТЕ

Варијабла низова из које басх чита могуће закључке генерисане помоћу функције схелл-а која се позива помоћу програмабилног објекта за завршетак (погледајте Программабле Цомплетион испод).

ФЦЕДИТ

Подразумевани едитор за наредбу фц буилтин.

ФИГНОРЕ

Листу суфикса одвојених од стране колона које се игноришу приликом извршавања имена филма (погледајте РЕАДЛИНЕ испод). Име фајла чији суфикс одговара једном од уноса у ФИГНОРЕ-у је искључен са листе упарених имена датотека. Вредност узорка је ".о: ~".

ГЛОБИГНОРЕ

Листа листе одвојених од стране колона дефинише скуп имена датотека које треба игнорисати проширењем путање. Ако се име датотеке у складу са шемом ширења стазе путања такође поклапа са једним од шаблона у ГЛОБИГНОРЕ , уклања се са листе утакмица.

ХИСТЦОНТРОЛ

Ако је постављено на вредност игноресвог простора , линије које почињу са знаком простора нису унете у листу историје. Ако је постављено на вриједност игнорисања , линије које одговарају задњој линији историје нису унете. Вредност игноребота комбинује две опције. Ако је неискључено или ако је постављено на било коју другу вредност од оних горе наведених, све линије које прочита парсер се чувају на листи историје, а подложне су вриједности ХИСТИГНОРЕ . Функцију ове варијабле замјењује ХИСТИГНОРЕ . Друга и наредна линија команде са више линија нису тестиране и додају се у историју без обзира на вредност ХИСТЦОНТРОЛ-а .

ХИСТФИЛЕ

Име фајла у којој се чува историја наредби (погледајте ИСТОРИЈАТ испод). Подразумевана вредност је ~ / .басх_хистори . Ако се не успостави, историја наредбе се не чува када интерактивна грана излази.

ХИСТФИЛЕСИЗЕ

Максималан број линија садржаних у историјском фајлу. Када је овој варијабли додијељена вриједност, датотека историје је скраћена, ако је потребно, да не садржи више од тог броја редова. Подразумевана вредност је 500. Датотека историје је такође скраћена до ове величине након што се пише када интерактивна грана излази.

ХИСТИГНОРЕ

Листа листе одвојених од стране колона користи се за одлучивање које командне линије треба сачувати на листи историје. Сваки шаблон је сакривен на почетку линије и мора се подударати с комплетном линијом (додато је имплицитно ' * '). Сваки образац се тестира у односу на линију након што се примјењују чекови које је одредио ХИСТЦОНТРОЛ . Поред нормалних знакова који одговарају знаковима шарже, ` & 'одговара претходној линији историје. ` & 'може бити избачен помоћу пошиљака са пошиљаоцима; ослобађајуће траке уклоњене пре покушаја меча. Друга и наредна линија команде са више линија нису тестиране и додају се у историју без обзира на вредност ХИСТИГНОРЕ .

ХИСТСИЗЕ

Број команди које треба запамтити у историји наредби (погледајте ИСТОРИЈАТ испод). Подразумевана вредност је 500.

КУЋА

Основни директоријум тренутног корисника; подразумевани аргумент за наредбу цд буилтин. Вриједност ове варијабле се такођер користи при извршењу експанзије тилде.

ХОСТФИЛЕ

Садржи име датотеке у истом формату као / етц / хостс које треба читати када схелл треба да доврши име хоста. Списак могућих довршавања имена хостова може се променити док се схелл ради; следећи пут када се покуша завршетак имена хоста након промене вриједности, басх додаје садржај нове датотеке на постојећу листу. Ако је ХОСТФИЛЕ подешен, али нема вриједност, басх покушава да прочита / етц / хостс да добије списак могућих довршавања имена хостова. Када ХОСТФИЛЕ није постављен, листа домаћина се брише.

ИФС

Интерни сепаратор поља који се користи за раздвајање ријечи након експанзије и раздвајање линија на ријечи са читањем изграђене команде. Подразумевана вредност је `` <спаце> <таб> <невлине> ''.

ИГНОРЕЕОФ

Контролише деловање интерактивне љуске на пријему ЕОФ карактера као једини улаз. Ако је постављено, вредност је број узастопних ЕОФ знакова који се морају откуцати као први знакови на улазној линији пре него што басх изађе. Ако варијабла постоји, али нема бројчану вриједност или нема вриједност, подразумевана вриједност је 10. Ако не постоји, ЕОФ означава крај уноса у схелл.

ИНПУТРЦ

Име фајла за реадлине стартуп датотеку, надмашујући подразумевану вредност ~ / .инпутрц (погледајте РЕАДЛИНЕ испод).

ЛАНГ

Користи се за одређивање категорије језика за сваку категорију која није изричито изабрана са променљивом која почиње са ЛЦ_ .

ЛЦ_АЛЛ

Ова варијабла надређује вриједност ЛАНГ- а и било које друге ЛЦ_ варијабле која одређује категорију локала.

ЛЦ_ЦОЛЛАТЕ

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

ЛЦ_ЦТИПЕ

Ова варијабла одређује тумачење карактера и понашање класа знакова унутар ширења путање и подударања узорака.

ЛЦ_МЕССАГЕС

Ова варијабла одређује лоцале који се користи за превођење двоструких цитата са претходним $ .

ЛЦ_НУМЕРИЦ

Ова варијабла одређује категорију локала која се користи за форматирање броја.

ЛИНИЈЕ

Користи се из команде селецт буилтин за одређивање дужине колоне за листе селекције. Аутоматски се постави по пријему СИГВИНЦХ-а.

ПОШТА

Ако је овај параметар постављен на име датотеке и није постављена променљива МАИЛПАТХ , басх обавештава корисника о доласку поште у наведену датотеку.

МАИЛЦХЕЦК

Одређује колико често (у секундама) баш провере пошту. Подразумевана вредност је 60 секунди. Када је време за проверу поште, схелл то ради пре него што прикаже примарни позив. Ако је ова варијабла неискључена или је постављена на вриједност која није број већи или једнак нули, схелл онемогућава проверу поште.

МАИЛПАТХ

Листа имена фајлова која се раздваја са колонама треба проверити за пошту. Порука која треба да се одштампа када пошта стигне у одређену датотеку може се одредити тако што се име датотеке одвоје од поруке са '?'. Када се користи у тексту поруке, $ _ се шири на име тренутне поштанске датотеке. Пример:

МАИЛПАТХ = '/ вар / маил / бфок? "Имате маил": ~ / схелл-маил? "$ _ Има пошту!"'

Басх испоручује подразумевану вредност за ову варијаблу, али локација корисничких датотека за пошту коју користи користи је зависна од система (нпр. / Вар / маил / $ УСЕР ).

ОПТЕРР

Ако је постављено на вредност 1, басх приказује поруке о грешци које генерише наредба гетоптс буилтин (погледајте СХЕЛЛ БУИЛТИН ЦОММАНДС испод). ОПТЕРР се иницијализује на 1 сваки пут кад се схелл користи или се изврши схелл скрипта.

ПАТХ

Путања за претрагу команди. То је листа директорија у коме граната тражи команде (погледајте ЦОММАНД ЕКСЕЦУТИОН испод). Подразумевана путања је зависна од система, а поставља га администратор који инсталира басх . Заједничка вредност је `` / уср / гну / бин: / уср / лоцал / бин: / уср / уцб: / бин: / уср / бин :. ''.

ПОСИКСЛИ_ЦОРРЕЦТ

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

ПРОМПТ_ЦОММАНД

Ако је постављено, вредност се извршава као команда пре издавања сваког примарног упутства.

ПС1

Вредност овог параметра је проширена (погледајте ПРОМПТИНГ испод) и користи се као примарни позивни низ. Подразумевана вредност је `` \ с- \ в \ $ ''.

ПС2

Вредност овог параметра је проширена као код ПС1 и користи се као секундарни позивни низ. Подразумевана вредност је `` > ''.

ПС3

Вредност овог параметра се користи као позив за команду за одабир (погледајте горе наведени СХЕЛЛ ГРАММАР ).

ПС4

Вредност овог параметра се проширује као код ПС1 и вредност се штампа пре него што се сваки командни басх приказује током трага за извршавање. Први карактер ПС4 се понавља више пута, по потреби, како би указао на више нивоа индирецтиона. Подразумевана вредност је `` + ''.

ФОРМАТ ВРЕМЕНА

Вредност овог параметра се користи као низ формата који одређује како би требало приказати информације о времену за цевоводе који су префиксирани са резервисаним ријечима времена . % Знак уводи секвенцу за бекство која се проширује на временску вредност или друге информације. Бежичне секвенце и њихово значење су следеће; огрлице означавају опционе делове.

%%

Добар % .

% [ п ] [л] Р

Прошло време у секундама.

% [ п ] [л] У

Број ЦПУ секунди потрошених у корисничком режиму.

% [ п ] [л] С

Број ЦПУ секунди проведених у системском режиму.

% П

Проценат ЦПУ-а, израчунат као (% У +% С) /% Р.

Опционо п је број означавајући прецизност , број фракционих цифара након децималне тачке. Вредност од 0 не доводи до изливања децималне тачке или фракције. Највише три места након што се децимална тачка може одредити; вредности п веће од 3 се мењају на 3. Ако п није специфициран, користи се вредност 3.

Опционални л специфицира дужи формат, укључујући и минуте, форму ММ м СС . ФФ с. Вредност п одређује да ли је део укључен или не.

Ако ова променљива није постављена, басх делује као да има вредност $ \ нреал \ т% 3лР \ нусер \ т% 3лУ \ нсис% 3лС ' . Ако је вредност нула, не приказују се информације о времену. Додата нова линија се додаје када се прикаже стринг за форматирање.

ТМОУТ

Ако је постављено на вредност већу од нуле, ТМОУТ се третира као подразумевани временски размак за читање . Команда селецт се прекида ако улаз не стигне након ТМОУТ секунди када улаз улази из терминала. У интерактивној школи, вредност се тумачи као број секунди чекања на унос након издавања примарног упутства. Баш се завршава након чекања на тај број секунди ако улаз не стигне.

ауто_ресуме

Ова варијабла контролише како схелл интеракцију са корисником и контролом посла. Ако је ова варијабла постављена, појединачне ријечи једноставне команде без редирекција се третирају као кандидати за наставак постојећег прекинутог посла. Не постоји двосмисленост; ако постоји више од једног посла који почиње са укуцаним низом, изабран је посљедњи посао. Назив заустављеног посла у овом контексту је командна линија која се користи за покретање. Ако је постављено на прецизну вриједност, испоручено стринг мора тачно одговарати називу заустављеног посла; ако је подразумевано подразумеваном , испоручено стринг треба да одговара подстрани назива заустављеног посла. Вредност подстанице пружа функционалност аналогну%% идентификатор посла (погледајте ЈОБ ЦОНТРОЛ у наставку). Ако је постављена на било коју другу вредност, испоручени низ мора бити префикс за име заустављеног посла; ово обезбеђује функционалност аналогну % идентификатору посла.

хистцхарс

Два или три знака који контролишу ширење историје и токенизацију (погледајте доле ХИСТОРИ ЕКСПАНСИОН). Први карактер је знак ширења историје , карактер који сигнализира почетак експанзије историје, обично ` ! '. Други знак је брзи знак замене , који се користи као скраћеница за поновно покретање претходне унете наредбе, замењујући један низ за други у наредби. Подразумевана вредност је ` ^ '. Опциони трећи знак је знак који означава да је остатак линије коментар када се пронађе као први карактер ријечи, обично ` # '. Карактер историје коментара доводи до преклапања замене хисторије за преостале речи на линији. Није обавезно проузроковати да раздјелник схелла третира остатак линије као коментар.

Арраи

Басх обезбеђује једнодимензионалне варијабле низова. Свака варијабла се може користити као низ; декларација уграђена експлицитно декларише низ. Не постоји максимална граница величине низа, нити било који услов да се чланови индексирају или додјеле узастопно. Низови се индексирају помоћу целих бројева и базирају се на нули.

Низ се креира аутоматски ако је свака варијабла додељена за кориштење имена синтаксе [ субсцрипт ] = вриједност . Инкпис се третира као аритметички израз који мора да процени на број већи или једнак нули. Да бисте експлицитно декларисали низ, користите декларацију -а име (погледајте СХЕЛЛ БУИЛТИН ЦОММАНДС испод). децларе -а име [ субсцрипт ] је такође прихваћено; инсцрипт је игнорисан. Атрибути могу бити специфицирани за променљиву арраи помоћу декларација и реадонли буилтинс. Сваки атрибут односи се на све чланове низа.

Низови се додјељују за кориштење спојених задатака имена обрасца = ( вриједност 1 ... вриједност н ) , гдје је свака вриједност облика [ субсцрипт ] = стринг . Потребна је само стринг . Ако су испоручени опционални загради и индексни индекс, тај индекс је додељен; иначе индекс задатог елемента је последњи индекс додијељен од стране изјаве плус један. Индексирање почиње на нули. Ову синтаксу прихвата и декларација уграђена. Појединачни елементи матрице се могу додијелити за кориштење имена [ индекцрипт ] = синтакса вриједности уведена горе.

Унсет уграђени се користи за уништавање низова. унсет наме [ субсцрипт ] уништава елемент арраи на индексном индексу. унсет наме , где је име низ или унсет име [ субсцрипт ], где је индексни знак * или @ , уклања цијели низ.

Изјављујуће , локалне и реадонли уграђене свако прихвата опцију да одреди низ. Читав изграђен прихвата опцију да додели листу речи прочитаних од стандардног уноса у низ. Поставите и декларишите уграђене вредности за приказ матрице на начин који им омогућава да се поново користе као задаци.

ЕКСПАНЗИЈА

Проширење се извршава на командној линији након што је подељена на ријечи. Постоји седам врста експанзије: експанзија браце, ширење тилде , параметар и варијабилна експанзија , замјена наредбе , аритметичка експанзија , раздвајање ријечи и проширење путање .

Редослед експанзије је: експанзија браце, експанзија тилде, параметар, варијабла и аритметичка експанзија и замјена команди (учињено лево-десно), раздвајање ријечи и проширење путање.

На системима који га могу подржати, доступна је додатна проширења: замјена процеса .

Проширење браће

Ширење Браце је механизам помоћу ког се могу произвести произвољне жице. Овај механизам је сличан проширењу путање , али генерисане датотеке не морају да постоје. Паттернс који су проширени у браћу имају облик необавезне преамбуле , а затим низ серија одвојених одрезака између паузе, а затим опциони постсцрипт . Преамбула је префиксирана за сваку низну везу у склопцима, а постсцрипт се затим додају сваком резултујућем низу, шири се лево на десно.

Проширење Браце-а се може угнежити. Резултати сваког проширеног низа нису сортирани; са десне стране је очувано. На пример, { д, ц, б } е се шири у `аде аце абе '.

Проширење Браце се врши пре било којих других проширења, а сви знакови посебни за друге експанзије се чувају у резултату. То је стриктно текстуално. Басх не примењује никакво синтактичко тумачење контексту ширења или текста између носача.

Ова конструкција се обично користи као скраћеница када је заједнички префикс стринга који се генерише дужи него у претходном примеру:

мкдир / уср / лоцал / срц / басх / {стари, нови, дисти, бугови}

или

цховн роот /уср/{уцб/{ек,едит},либ/{ек?.**ховхов_ек}}

Ширење Браце представља благу некомпатибилност са историјским верзијама сх . сх не третира отворене или затвараче посебно када се појављују као део речи и чувају их на излазу. Басх уклања блокове од речи као последицу експанзије оклопа. На пример, реч која се унесе у сх као фајл {1,2} се појављује идентично на излазу. Иста реч излази као филе1 филе2 након проширења за басх . Ако је жељна стриктна компатибилност с сх , започните басх са опцијом + Б или онемогућите проширење браце помоћу опције + Б у задату наредбу (погледајте СХЕЛЛ БУИЛТИН ЦОММАНДС испод).

Ширење Тилде

Ако једна реч почиње некотимичним знаком тилде (` ~ '), сви знакови који претходи првом небројене чауре (или све знакове, ако не постоји ниједна коефицијент чекања) сматрају се тилде-префиксом . Ако се не наводи ниједан од знакова у тилде-префиксу, знакови у тилде-префиксу након тилде третирају се као могуће име за пријаву . Ако је ово име за пријаву нулл стринг, тилда се замењује вриједношћу параметра схелл ХОМЕ . Ако је ХОМЕ неискључен, уместо тога замењује се почетни директориј корисника који извршава љуску. Иначе, тилде-префикс се замењује почетним директоријумом који је повезан са наведеним корисничким именом.

Ако је тилде-префикс `~ + ', вредност променљиве схелл-а ПВД замењује тилде-префикс. Ако је тилде-префикс `~ - ', вредност променљиве схелл-а ОЛДПВД , ако је постављена, замењује се. Ако се знакови који прате тилде у тилде-префиксу састоје од броја Н , опционо префиксован са `+ 'или` -', тилде-префикс се замењује одговарајућим елементом из стацк директоријума, јер би се приказао од стране уграђених дирзова, који се позивају на тилде-префикс као аргумент. Ако су знакови који прате тилде у тилде-префиксу састоји се од броја без водећих `+ 'или` -', `+ '.

Ако је име за пријаву неважеће или ако експанзија тилде не успе, ријеч је непромењена.

Свака одредба варијабле се проверава за некотирану тилде-префиксу одмах након : или = . У овим случајевима се врши и ширење тилде. Сходно томе, може се користити имена датотека са тилдес у задацима за ПАТХ , МАИЛПАТХ и ЦДПАТХ , а схелл додељује проширену вредност.

Ширење параметара

Знак ` $ 'уводи експанзију параметара, супституцију наредбе или аритметичку експанзију. Име параметра или симбол који треба проширити може бити приложен у грудима који су необавезни, али служе за заштиту варијабле која се шири од знакова који се одмах прате, а који се могу тумачити као дио имена.

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

Вредност параметра је замењена. Носи се захтевају када је параметар параметар позиције са више од једне цифре, или када параметар прати знак који се не може тумачити као дио његовог имена.

У сваком од случајева испод, реч је подложна експанзији тилде, експанзији параметара, замени команди и аритметичком експанзији. Када не извршава експоненцију подразумева, басх тестира параметар који је неисправан или нултан; изостављање дебелог црева резултира тестом само за параметар који се не поставља.

Користите подразумеване вредности . Ако је параметар неискључен или нултан, ширење речи је замењено. У супротном, вредност параметра је замењена.

Додели подразумеване вредности . Ако је параметар нерешен или нултан, проширење речи додељује се параметру . Вредност параметра се затим замењује. На овај начин се не могу додијелити параметри позиције и специјални параметри.

Приказује грешку ако је Нулл или Унсет . Ако је параметар нулл или неуспјешан, проширење речи (или порука у том случају ако ријеч није присутна) пише се у стандардну грешку и схелл, ако није интерактиван, напушта. У супротном, вредност параметра је замењена.

Користите алтернативну вредност . Ако је параметар нулл или неисправан, ништа није замењено, иначе је експанзија речи замењена.

Проширује се на имена варијабли чија имена почињу са префикса , одвојеним првим карактером ИФС посебне варијабиле.

Дужина у карактерима вредности параметра је замењена. Ако је параметар * или @ , замењена вредност је број параметара за позицију. Ако је параметар име низа индексиран помоћу * или @ , замењена вредност је број елемената у низу.

Реч је проширен тако да произведе образац баш као иу проширењу путање. Ако се образац подудара са почетком вредности параметра , резултат експанзије је проширена вредност параметра са најкрајшим подударањем (случај `` # '') или најдужи образац подударања (`` ## ' 'случај) је обрисан. Ако је параметар @ или * , операција уклањања узорака се примењује на сваки параметар позиције заузврат, а проширење је резултирајућа листа. Ако је параметар арраи променљива индексирана са @ или * , операција уклањања узорака се примењује на сваког члана арракта, а експанзија је резултујућа листа.

Реч је проширен тако да произведе образац баш као иу проширењу путање. Ако образац одговара задњем дијелу експандиране вредности параметра , онда је резултат експанзије проширена вредност параметра са најкрајшим подударањем (случај `%% ') или најдужи образац подударања (` ` % % '' случај је обрисан. Ако је параметар @ или * , операција уклањања узорака се примењује на сваки параметар позиције заузврат, а проширење је резултирајућа листа. Ако је параметар арраи променљива индексирана са @ или * , операција уклањања узорака се примењује на сваког члана арракта, а експанзија је резултујућа листа.

Шаблон је проширен како би се направио образац као и код проширења путање. Параметар је проширен, а најдужи међуспремник у односу на његову вриједност замјењује се низом . У првом облику замјењује се само први меч. Други облик узрокује да се све утакмице образаца замене низом . Ако образац почиње са # , мора се поклапати на почетку проширене вредности параметра . Ако образац почиње са % , мора се подударати на крају проширене вредности параметра . Ако је стринг нула, подударања шаблона се бришу и шаблон / следеће се може изоставити. Ако је параметар @ или * , операција замене се примјењује на сваки позицијски параметар, а експанзија је резултирајућа листа. Ако је параметар арраи променљива индексирана са @ или * , операција супституције се примењује на сваког члана арракта, а експанзија је резултујућа листа.

Командна замена

Замјена наредбе дозвољава излаз команде да замијени име команде. Постоје два облика:

$ ( команда )

или

` цомманд`

Басх извршава експанзију извршавајући команду и замењујући замјену наредбе с стандардним излазом команде, са било којим заокруженим новим линијама избрисаним. Уграђени нови редови се не бришу, али се могу уклонити током раздвајања речи. Замена команде $ ( датотека цат ) може се заменити еквивалентном, али бржом $ (< датотеком ).

Када се користи облик замене који се користи у старој стилу, бацксласх задржава своје дословно значење, осим када следи $ , ` , или \ . Први повратни број који претходи обрнутој траци не завршава замену наредбе. Када користите $ ( наредбу ), сви знакови између заграда чине команду; Нико се не третира посебно.

Замене наредбе могу бити угнежене. Да се ​​гнезди приликом коришћења формулара који се враћа у позадину, избегавајте унутрашње повратне кутије са кукама са кукама.

Ако се замена појављује у двоструким наводницима, раздвајање ријечи и проширење путање се не извршавају на резултатима.

Аритметичка експанзија

Аритметичка експанзија омогућава процену аритметичког израза и супституцију резултата. Формат за аритметичку експанзију је:

$ (( израз ))

Израз се третира као да је у двоструким наводницима, али двоструки цитат у заградама се не третира посебно. Сви токени у изразу пролазе кроз проширење параметара, експанзију низова, замену наредби и уклањање цитата. Аритметичке супституције могу бити угнежене.

Евалуација се врши према правилима наведеним у наставку АРИТМЕТИЧКА ЕВАЛУАЦИЈА . Ако је израз неважећи, басх штампа поруку која указује на грешку и не врши се замена.

Замена процеса

Замена процеса је подржана на системима који подржавају именоване цијеви ( ФИФО ) или методу / дев / фд за именовање отворених датотека. Узима се облик <( лист ) или > ( листа ) . Листа процеса се покреће помоћу његовог улаза или излаза повезаног на ФИФО или неку датотеку у / дев / фд . Име ове датотеке се преноси као аргумент тренутне команде као резултат проширења. Ако се користи образац ( листа ) , писање у датотеку обезбеђује улаз за листу . Ако се користи формулар <( лист ) , датотека која се преноси као аргумент треба прочитати да би се добила излаз листе .

Када је доступно, замјена процеса се врши истовремено са параметрима и варијабилном експанзијом, замјеном команде и аритметичком експанзијом.

Раздвајање ријечи

Шутирање скенира резултате експанзије параметара, супституције наредбе и аритметичке експанзије која се није појавила у двоструким наводницима за раздвајање ријечи .

Шарка третира сваки карактер ИФС-а као раздјелник и раздваја резултате других експанзија у речи на овим ликовима. Ако ИФС није постављен, или његова вриједност је тачно <спаце> <таб> <невлине> , подразумевана вриједност, онда било који низ ИФС знакова служи за раздвајање ријечи. Ако ИФС има вредност другачију од подразумеване, тада се на почетку и крају речи игноришу секвенце простора и табулатора знакова за размакницу , све док се знак за просецање прелази у вредност ИФС-а ( ИФС празни знак). Сваки знак у ИФС-у који није ИФС пространи простор, заједно са било којим суседним ИФС знаковима, ограничава поље. Секвенца ИФС празних знакова такође се третира као раздјелник. Ако је вриједност ИФС- а нула, не дијели се раздвајање ријечи.

Изражени нулти аргументи ( "" или "" ) су задржани. Неликвидирани имплицитни нулл аргументи, који су резултат ширења параметара који немају вредности, уклањају се. Ако се параметар без вредности проширује у двоструке наводнике, нулти аргумент се приказује и задржава се.

Имајте на уму да ако се не дође до експанзије, не врши се раздвајање.

Проширење путање

Након раздвајања речи, осим уколико је опција постављена, басх скенира сваку реч за знакове * ,? , и [ . Ако се појави један од ових знакова, онда се реч сматра шема и замењује се са алфабетичким сортираним листом имена датотека која одговарају образцу. Ако се не пронађу одговарајућа имена датотека, а опција схелл-а нуллглоб је онемогућена, ријеч остане непромењена. Ако је опција нуллглоб подешена, а ниједно подударање није пронађено, реч се уклања. Ако је опција схелл омогућена ноцасеглоб , утакмица се врши без обзира на случај абецедних знакова. Када се шаблон користи за проширење путање, знак "`. "" На почетку имена или одмах након чауре се мора експлицитно ускладити, осим ако није подешена опција дотглоба схелл-а. Кад се подударају са путањом, знак коса мора увек бити експлицитно упарен. У другим случајевима, знак ``. '' Се не третира посебно. Погледајте опис продавнице испод испод СХЕЛЛ БУИЛТИН ЦОММАНДС за опис ноцасеглоб , нуллглоб и дотглоб схелл опција.

ГЛОБИГНОРЕ схелл променљива се може користити за ограничавање имена имена датотека која одговарају образцу . Ако је подешен ГЛОБИГНОРЕ , свако одговарајуће име датотеке које се такође поклапа са једним од шаблона у ГЛОБИГНОРЕ-у , уклања се са листе утакмица. Имена датотека "`. "" И ".. .." увек се занемарују, чак и када је подешен ГЛОБИГНОРЕ . Међутим, постављање ГЛОБИГНОРЕ-а има ефекат омогућавања опције дотглоб схелл, тако да ће сва друга имена датотека која почињу са ``. '' Бити усклађена. Да бисте стари понашање игнорисали имена датотека почевши од ``. '' , Направите ``. * '' Један од шаблона у ГЛОБИГНОРЕ-у . Опција дотглоб је онемогућена када је ГЛОБИГНОРЕ искључен.

Поклапање облика

Сваки знак који се појављује у шаблону, осим оних који су описани испод, се подударају с њим. Карактер НУЛ се не може појавити у облику. Посебни знакови узорака морају бити цитирани ако се оне морају упоредити буквално.

Посебни карактери карактера имају следеће значење:

*

Подударање било ког низа, укључујући и нулл стринг.

?

Подудара се са једним знаком.

[...]

Подудара се са било којим од затворених знакова. Пар знакова који су раздвојени помоћу цртице означавају опсег израза ; било који лик који се сортира између ова два знака, укључујући, користећи секвенцу сакупљања тренутног локалитета и скуп знакова, одговара. Ако је први знак који следи [ је ! или а ^ онда се сваки знак који није затворен одговара. Редослед сортирања карактера у изразима опсега одређује се тренутном локалном и вриједношћу варијабле ЛЦ_ЦОЛЛАТЕ схелл-а, ако је постављено. А - може се упарити укључивањем као први или последњи карактер у скупу. А ] може бити упарена укључивањем као први знак у скупу.

У оквиру [ и ] , класе знакова могу бити специфициране помоћу синтаксе [: цласс :] , гдје је класа једна од следећих класа дефинисаних у стандарду ПОСИКС.2:

алнум алпха асции бланк цнтрл дигит грапх ловер принт пунцт спаце горња реч кдигит
Класа знакова одговара сваком карактеру који припадају тој класи. Класа карактера ријечи се састоји од слова, цифара и карактера _.

У оквиру [ и ] , класа еквиваленције се може одредити помоћу синтаксе [= ц =] , која се подудара с свим карактерима са истом тежином скупа (као што је дефинисано тренутним језиком) као знак ц .

У оквиру [ и ] , синтакса [. симбол .] одговара симболу симбола за упоређивање.

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

? ( образац-листа )

Одговара нули или једној појави датих шаблона

* ( образац-листа )

Одговара нули или више појава дати шаблон

+ ( листа образаца )

Подудара се са једним или више појава датих шема

@ ( образац-листа )

Подударање тачно један од датих шаблона

! ( образац-листа )

Подудара се с једним од датих шаблона

Куоте Ремовал

Након претходних експанзија, уклоњене су све неокончане појаве знакова \ , ' и ' које нису резултат једне од горе наведених проширења.

РЕДИРЕЦТИОН

Пре него што се команда изврши, њен улаз и излаз се могу преусмерити користећи посебну нотацију коју тумачи схелл. Преусмеравање се такође може користити за отварање и затварање датотека за тренутно окружење извршења окружења. Следећи оператери за преусмеравање могу претходити или појавити било где у оквиру једноставне наредбе или могу следити наредбу . Преусмеравања се обрађују по редоследу који се појављују, с лева на десно.

У следећим описима, ако је број дескриптора датотеке изостављен, а први карактер оператера за преусмеравање је < , преусмеравање се односи на стандардни улаз (опис датотеке 0). Ако је први карактер оператера за преусмеравање >> , преусмеравање се односи на стандардни излаз (дескриптор датотеке 1).

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

Имајте на уму да је редослед преусмеравања значајан. На пример, команда

лс > дирлист 2 > & 1

усмерава и стандардни излаз и стандардну грешку у датотеку дирлист , док команда

лс 2 > & 1 > дирлист

усмерава само стандардни излаз на датотеку дирлист , јер је стандардна грешка дуплирана као стандардни излаз пре него што је стандардни излаз преусмерен на дирлист .

Басх рукује неколико датотека посебно када се користе у редирекцијама, како је описано у следећој табели:

/ дев / фд / фд

Ако је фд валидан цијели број, дескриптор фд је дуплиран.

/ дев / стдин

Дескриптор датотека 0 је дуплиран.

/ дев / стдоут

Дескриптор датотека 1 је дуплиран.

/ дев / стдерр

Дескриптор датотека 2 је дуплиран.

/ дев / тцп / хост / порт

Ако је хост важећи хостнаме или Интернет адреса, а порт је број целог броја или име услуге, басх покушава да отвори ТЦП конекцију у одговарајући сокет.

/ дев / удп / хост / порт

Ако је хост важећи хостнаме или Интернет адреса, а порт је број целог броја или име услуге, басх покушава да отвори УДП везу са одговарајућим сокетом.

Неуспјех отварања или креирање датотеке доводи до неуспјеха преусмеравања.

Редирецтинг Инпут

Преусмеравање уноса узрокује датотеку чије име произилази из проширења речи која ће се отворити за читање на дескриптору датотеке или стандардни унос (дескриптор датотеке 0) ако н није наведен.

Општи формат за унос преусмеравања је:

[ н ] < реч

Преусмеравање излаза

Преусмеравање излаза доводи до тога да је датотека чије име резултира проширењем ријечи која ће се отворити за писање на дескриптору датотеке или стандардни излаз (дескриптор датотеке 1) ако н није наведен. Ако датотека не постоји, креира се; ако постоји, скраћено је до нуле величине.

Општи формат за преусмеравање излаза је:

[ н ] > реч

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

Додавање преусмјереног излаза

Преусмеравање излаза на овај начин узрокује датотеку чије име произилази из проширења ријечи која ће се отворити за додавање на дескриптор н или стандардни излаз (дескриптор датотеке 1) ако н није наведен. Ако датотека не постоји, креира се.

Општи формат за производњу излаза је:

[ н ] >> реч

Преусмеравање стандардног излаза и стандардне грешке

Басх омогућава и стандардни излаз (дескриптор датотеке 1) и стандардни излаз грешке (дескриптор датотеке 2) који се преусмерава у датотеку чије је име ширење речи са овим конструктом.

Постоје два формата за преусмеравање стандардног излаза и стандардну грешку:

&> реч

и

> и реч

Од ова два облика, први је пожељан. Ово је семантички једнако

> реч 2 > & 1

Овде документи

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

Формат докумената је:

<< [ - ] ворд - делимитер раздвајач

Нема експанзије параметара, замене наредбе, аритметичке експанзије или проширења путање на ријечи . Ако су цитирани неки знакови у речима , раздјелник је резултат уклањања цитата на реч , а линије у документу овде нису проширене. Ако је реч некотиран, све линије овде документа су подложне експанзији параметара, замени команди и аритметичком експанзији. У последњем случају, секвенца карактера \ <невлине> је игнорисана, и \ мора се користити за цртање знакова \ , $ и ` .

Ако је оператер за преусмеравање << - , онда су сви водећи знакови лика одвојени од улазних линија и линије која садржи раздјелник . Овим се дозвољава да документи унутар скрипти ширег наруше на природан начин.

Овде Стрингс

Варијанта овде документи, формат је:

<<< реч

Реч је проширен и испоручен команди на његовом стандардном улазу.

Дуплирање фајлова дескриптора

Оператор преусмеравања

[ н ] реч

се користи за дуплирање дескриптора улазних датотека. Ако се ријеч проширује на једну или више цифара, дескриптор датотеке означен са н чини се копијом тог дескриптора датотеке. Ако цифре у речу не наводе опис датотеке који је отворен за унос, дође до грешке преусмеравања. Ако ријеч процјењује на - , дескриптор датотеке је затворен. Ако н није наведен, користи се стандардни улаз (дескриптор датотеке 0).

Оператор

[ н ] > и реч

се користи слично као код дупликата дескриптора излазних датотека. Ако н није наведен, користи се стандардни излаз (дескриптор датотеке 1). Ако цифре у речу не наводе опис датотеке који је отворен за излаз, долази до грешке преусмеравања. Као посебан случај, ако је н изостављен, а реч се не шири на једну или више цифара, стандардни излаз и стандардна грешка се преусмеравају као што је претходно описано.

Мовинг Филе Десцрипторс

Оператор преусмеравања

[ н ] цифра -

помера цифру дескриптора датотеке у дескриптор датотеке или стандардни улаз (дескриптор датотеке 0) ако н није наведен. цифра је затворена након што се дуплира на н .

Слично томе, оператор преусмеравања

[ н ] > и цифра -

премјести цифру дескриптора датотеке у дескриптор датотеке или стандардни излаз (дескриптор датотеке 1) ако н није наведен.

Отварање дескриптора датотека за читање и писање

Оператор преусмеравања

[ н ] <> реч

узрокује датотеку чије име је проширење речи која ће се отворити за читање и писање на дескриптору датотеке н или на дескриптору датотеке 0 ако н није наведен. Ако датотека не постоји, она се креира.

АЛИАСИ

Алиасес дозвољавају да се стринг замијени за реч када се користи као прва реч једноставне команде. У схелл-у одржава се листа алијаса које се могу подесити и неусклађивати са алијансом и уналиас буилтин командама (погледајте СХЕЛЛ БУИЛТИН ЦОММАНДС испод). Прва реч сваке наредбе, ако је некотиран, проверава се да ли има псеудоним. Ако је тако, та реч замењује текстом псеудоним. Име алијаске и заменски текст могу садржавати било који важећи схелл улаз, укључујући и горе поменуте метацхарацтерс , изузев да име алијасца не може садржавати = . Прва ријеч замјенског текста је тестирана за надимке, али ријеч која је идентична проширеном псеудониму није проширена по други пут. То значи да се може претворити у лс -Ф , на примјер, а басх не покушава рекурзивно проширити текст замјене. Ако је последњи знак вредности за псеудоним празан , онда се следећа командна реч која следи алијасу проверава и за експанзију звучника.

Алиасес се креирају и наводе са командом алиас и уклањају се са уналиас командом.

Не постоји механизам за кориштење аргумената у тексту замјене. Ако су потребни аргументи, треба користити функцију шкољке (погледајте ФУНКЦИЈЕ испод).

Алијаси се не шире када схелл није интерактиван, осим ако је опција схелл_алиасес подешена користећи схопт (погледајте опис схопт испод СХЕЛЛ БУИЛТИН ЦОММАНДС испод).

Правила која се односе на дефиницију и употребу алијаса су донекле збуњујућа. Басх увек чита барем једну комплетну линију уноса пре него што изврши било коју команду на тој линији. Алијаси се проширују када се команда чита, а не када се извршава. Дакле, дефиниција псеудонима која се појављује на истој линији као и друга команда не ступа на снагу док се не прочита следећа линија уноса. Нови наредби не утиче на наредбе које следи дефиницију алијансе на тој линији. Ово понашање је такође проблем када се функције извршавају. Алијасе се шире када се прочита дефиниција функције, а не када се функција изврши, јер је дефиниција функције сама команда. Као последица тога, алиас дефинисани у функцији нису доступни све док се та функција не изврши. Да бисте били сигурни, увек унесите дефиниције на посебној линији и немојте користити алијас у командним јединицама.

За готово сваку сврху, алиас се замењују функцијама шкољке.

ФУНКЦИЈЕ

Функција шкољке, дефинисана као горе описана под СХЕЛЛ ГРАММАР-ом , чува серију наредби за касније извршење. Када се име схелл функције користи као једноставно име команде, извршава се листа команди повезаних са том функцијом. Функције се извршавају у контексту тренутне љуске; није направљен нови процес како би их тумачили (супротно томе, извршавањем схелл скрипте). Када се функција изврши, аргументи за функцију постају параметри положаја током његовог извршења. Специјални параметар # је ажуриран да одражава промену. Позицијски параметар 0 је непромењен. ФУНЦНАМЕ варијабла је постављена на име функције док се функција извршава. Сви остали аспекти окружења за извршење шкољке су идентични између функције и позиваоца, изузев да је замка ДЕБУГ (погледај опис замке испод СХЕЛЛ БУИЛТИН ЦОММАНДС испод) није наслијеђена, осим ако је функција додељена атрибуту трага ( погледајте опис декларисане грађе испод).

Варијабле које су локалне за функцију могу бити декларисане са локалном уграђеном командом. Обично, варијабле и њихове вриједности деле се између функције и позиваоца.

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

Имена функција и дефиниције могу бити наведене са опцијом за проглашавање или уписивање уграђених наредби. Опција за декларисање или обликовање ће навести само имена функција. Функције се могу извозити тако да их подслони аутоматски дефинишу са опцијом за уграђени извоз .

Функције могу бити рекурзивне. Не ограничава се број рекурзивних позива.

АРИТМЕТСКА ЕВАЛУАЦИЈА

Шкабле дозвољава процену аритметичких израза, под одређеним околностима (погледајте команду пустите уграђену и аритметичку експанзију ). Евалуација се врши у интегрираним јединицама фиксне ширине без провере за прелив, иако је подјељењем од 0 заробљено и означено као грешка. Оператори и њихов приоритет и асоцијативност су исти као у језику Ц. Следећа листа оператора је груписана у нивое оператора једнаког прецедента. Нивои су наведени у редоследу смањења првенства.

ид ++ ид -

варијабилни пост-инкремент и пост-декретирање

++ ид - ид

варијабилни пре-инкремент и пред-декретирање

- +

унари минус и плус

! ~

логичка и битна негација

**

експоненцијација

* /%

множење, подела, остатак

+ -

додавање, одузимање

<< >>

лева и десна битна помака

<=> = <>

поређење

==! =

једнакост и неједнакост

& &

битвисе АНД

^

битно ексклузивно ОР

|

битвисе ОР

&&

логички АНД

||

логички ОР

екпр ? екпр : екпр

условна евалуација

= * = / =% = + = - = << = >> = & = ^ = | =

додељивање

екпр1 , екпр2

запета

Схелл варијабле су дозвољене као операнде; проширење параметара се врши пре него што се израз израчуна. Унутар израза, варијабле љуске се такође могу реферисати по имену без коришћења синтаксне ширине параметара. Вредност варијабле се оцјењује као аритметички израз када се референцира. Шаришна варијабла не мора имати атрибут интегер који је укључен да се користи у изразу.

Константе са водећим 0 се тумаче као октални бројеви. Водећи 0к или 0Кс означава хексадецимално. Иначе, бројеви узимају облик [ басе # ] н, где је основа децимални број између 2 и 64 који представља аритметичку базу, а н је број у тој бази. Ако је основа # изостављена, онда се користи база 10. Цифре веће од 9 приказане су малим словима, великим словима, @ и _, у том редоследу. Ако је основа мања или једнака 36, мала и велика слова се могу замјењивати за бројеве између 10 и 35.

Оператори се оцењују по редоследу. Под-изрази у заградама се прво процењују и могу надмашити претходна правила прецеденције.

УГОВОРНИ ИЗАЗОВИ

Условне изразе користе команда [[ цомпоунд цомпоунд и тест и [ буилтин цоммандс за тестирање атрибута датотека и извршавање низова и аритметичких упоређивања. Изрази се формирају из следећих уједначених или бинарних примарних. Ако је било који аргумент за датотеку у једном од примарних форми / дев / фд / н , онда је дескриптор н означен. Ако је фајл аргумент за један од примарних је један од / дев / стдин , / дев / стдоут , или / дев / стдерр , означен је дескриптор датотеке 0, 1 или 2, респективно.

фајл

Истина ако постоји датотека .

датотека

Тачно ако датотека постоји и представља посебну датотеку за блок.

фајл

Тачно ако датотека постоји и представља посебну датотеку карактера.

фајл

Тачно ако датотека постоји и представља директориј.

фајл

Истина ако постоји датотека .

фајл

Истина ако постоји датотека и која је редовна датотека.

фајл

Тачно ако датотека постоји и је сет-гроуп-ид.

фајл

Истина ако датотека постоји и представља симболичку везу.

фајл

Истина ако постоји датотека и постављен је његов "стицки" бит.

-п фајл

Истина ако постоји датотека и назива се цијев (ФИФО).

фајл

Истина ако датотека постоји и може се читати.

датотека

Истина ако датотека постоји и има величину већу од нуле.

фд

Истина је ако је дескриптор фд отворен и односи се на терминал.

фајл

Тачно ако датотека постоји и подешен је његов сет-усер-ид бит.

фајл

Истина ако датотека постоји и може се писати.

фајл

Истина ако датотека постоји и може се извршити.

филе

Тачно ако датотека постоји и поседује ефективан кориснички ИД.

фајл

Тачно ако датотека постоји и налази се у власништву ефективне групе ИД-а.

фајл

Истина ако датотека постоји и представља симболичку везу.

фајл

Истина ако датотека постоји и представља утичницу.

датотеку

Тачно ако датотека постоји и модификована је од последњег читања.

филе1 - нт филе2

Истина ако је датотека1 новија (према датуму модификације) од датотеке2 , или ако датотека1 постоји и датотека2 не.

филе1 - от филе2

Истина ако је датотека1 старија од датотеке2 , или ако датотека2 постоји и датотека1 не.

филе1 -еф филе2

Истина ако се фајлови1 и датотека2 односе на исте бројеве уређаја и инода.

оптимум име

Истина је ако је омогућена опт. Погледајте листу опција под описом опције до постављеног испод.

низ

Истина ако је дужина низа нула.

стринг

низ

Истина ако је дужина низа нула.

стринг1 == стринг2

Истина је да ли су стрингови једнаки. = може се користити уместо == за стриктну ПОСИКС сагласност.

стринг1 ! = стринг2

Истина је да ли су стрингови једнаки.

стринг1 < стринг2

Истина ако стринг1 сортира прије стринг2 лексикографски у тренутном језику.

стринг1 > стринг2

Истина ако стринг1 сортира по стринг2 лексикографски у тренутном језику.

арг1 ОП арг2

ОП је једна од -ек , -не , -лт , -ле , -гт или -ге . Ови аритметички бинарни оператери враћају се тачно ако је арг1 једнак, не једнак, мање од, мање или једнак већем од или већем од или једнак арг2 , респективно. Арг1 и арг2 могу бити позитивни или негативни бројеви.

СИМПЛЕ ЦОММАНД ЕКСПАНСИОН

Када се изврши једноставна команда, схелл извршава следеће проширења, задатке и преусмеравања, с лева на десно.

1.

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

2.

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

3.

Преусмеравања се обављају као што је горе описано у РЕДИРЕЦТИОН .

4.

Текст после = у сваком задатку промене подлеже проширењу тилде, експанзији параметара, замени команди, аритметичком експанзији и уклањању цитата пре него што се додели варијабли.

Ако ниједно име команде није резултат, додјељивање варијабли утјече на тренутно окружење окружења. У супротном, варијабле се додају у окружење извршене команде и не утичу на тренутно окружење окружења. Ако било која од задатака покушава да одреди вредност променљивој читачу, дође до грешке и команда излази са статусом који није нула.

Ако ниједно име команде не резултира, преусмеравања се извршавају, али не утичу на тренутно окружење схелл-а. Грешка преусмеравања доводи до тога да команда изађе са статусом који није нула.

Ако је након проширења остало командно име, извршење се наставља како је описано у наставку. У супротном, наредба излази. Ако је једна од проширења садржала замену наредбе, статус излазног команде је статус излазне задње извршене замјене наредбе. Ако нема замене наредбе, команда излази са статусом нуле.

ИЗВРШЕЊЕ КОМАНДЕ

Након што је команда подељена на ријечи, ако резултира једноставном командом и опционом пописом аргумената, предузимају се сљедеће акције.

Ако име команде не садржи косе, схелл покушава да га лоцира. Ако на то име постоји функција шкољке, та функција се позива као што је горе описано у ФУНКЦИЈАМА . Ако се име не подудара с функцијом, схелл га претражује на листи уграђених граната. Ако се пронађе меч, позвати се онај изграђен.

Ако име није ни гранична функција нити је изграђено, а не садржи сласхес, басх претражује сваки елемент ПАТХ-а за директоријум који садржи извршну датотеку са тим именом. Басх користи хешну таблицу да би запамтио пуне имена путева извршних датотека (погледајте хеш испод СХЕЛЛ БУИЛТИН ЦОММАНДС испод). Потпуно претраживање директорија у ПАТХ се врши само ако се команда не налази у табели хашиша. Ако је претрага неуспешна, схелл отвара поруку о грешци и враћа статус излазног броја од 127.

Ако је претрага успешна, или ако име команде садржи једну или више слазева, схелл извршава именовани програм у одвојеном окружењу извршења. Аргумент 0 је подешен на дато име, а преостали аргументи команди су постављени на дате аргументе, ако их има.

Ако ово извршење не успије јер датотека није у извршном формату, а датотека није директориј, претпоставља се да је скрипта , датотека која садржи схелл команде. Подгрупа се покреће да би је извршила. Ово под-елемент се поново иницијализира, тако да је ефекат као да је нова љуска била позвана да се бави скриптом, изузев да су детаље оштећене локације команди запамћених од стране родитеља (погледајте гесло испод СХЕЛЛ БУИЛТИН ЦОММАНДС ).

Ако је програм датотека која почиње са #! , остатак прве линије одређује тумача за програм. Шкабле извршава одређени тумач на оперативним системима који сами не обрађују овај извршни формат. Аргументи за тумача се састоје од једног опционог аргумента који следи називу тумача у првој линији програма, а затим следи име програма, а затим и командни аргументи, ако их има.

ОКРУЖЕЊЕ КОМАНДНЕ ИЗВРШЕЊЕ

Шкафа има окружење извршења које се састоји од следећег:

*

отвори фајлове које је наследила љуска приликом позивања, као што је модификовано преусмеравањем испорученим у екец буилтин

*

тренутни радни директориј постављен од стране цд , пусхд или попд , или наслеђен од стране љуске на позиву

*

маску режима креирања датотеке која је постављена од стране умаск или наслеђена од родитеља шкољке

*

тренутне замке постављене од стране замке

*

параметре љуске које су постављене променљивим додељивањем или са постављеним или наслеђеним од родитеља љуске у окружењу

*

схелл функције дефинисане током извршења или наслеђене од родитеља шкољке у окружењу

*

опције омогућене приликом позивања (било подразумевано или аргумената командне линије) или постављено

*

опције омогућене од стране схопт

*

схелл алиасес дефиниране са псеудонимом

*

различите ИД-ове процеса, укључујући и оне позадинских послова, вриједност $$ , и вриједност $ ППИД-а

Када се изврши једноставна команда осим уграђене или граничне функције, она се позива у посебном окружењу извршења које се састоји од следећег. Осим ако није другачије назначено, вредности су наслеђене из љуске.

*

отворене датотеке схелл-а, плус све модификације и додатке специфициране преусмеравањем у команду

*

тренутни радни директоријум

*

маска за креирање датотека

*

схелл променљиве означене за извоз, заједно са варијаблама које се извозе за команду, прошле су у окружењу

*

замке које ухвате љуска се ресетују на вриједности које су наслеђене од родитеља љуске, а замке које су игнорисане од стране љуске игнорисане су

Команда која се позива у овом одвојеном окружењу не може утицати на окружење извршења схелл-а.

Замјена команди и асинхрони команде се позивају у окружењу подгрупе које је дупликат окружења љуске, осим што се замке које ухвате љусци ресетују на вриједности које је љека наследила од родитеља на позив. Изградјене команде које се позивају као дио плиновода се такође извршавају у окружењу подгрупе. Промене извршене у окружењу подгрупе не могу утицати на окружење извршавања схелл-а.

Ако командом следи контрола & и јоб није активна, подразумевани стандардни улаз за команду је празна датотека / дев / нулл . У супротном, позивана наредба наследи дескрипторе датотеке позивне љуске која су модификована редирекцијама.

ТАКОЂЕ ВИДЕТИ

Басх Референце Мануал , Бриан Фок и Цхет Рамеи

Гну Реадлине Либрари , Бриан Фок и Цхет Рамеи

Библиотека историје Гну , Брајан Фокс и Чет Рамеј

Преносиви интерфејс оперативног система (ПОСИКС) Дио 2: Схелл и Утилитиес , ИЕЕЕ

сх (1), ксх (1), цсх (1)

емацс (1), ви (1)

реадлине (3)