Skip to main content

Linux - Unix ukaz: bash

Anonim

Ukaz Linux Bash jeshkompatibilen jezikovni tolmač, ki izvaja ukaze, ki se berejo iz standardnega vhoda ali iz datoteke.Bash vključuje tudi uporabne funkcije iz lupine Korn in C (ksh incsh).

Bash Možnosti

Poleg enopartijskih možnosti ukazne dokumentacije, opisane v opisunastavite zgrajen ukaz,bash razlaga naslednje možnosti, ko se zanima:

  • -c niz: Če je-c možnost je prisotna, nato pa odčitamo ukaze niz . Če obstajajo argumenti po niz , so jim dodeljeni pozicijski parametri, začenši z$0.
  • -jaz: Če je-jaz možnost je prisotna, lupina je interaktivno .
  • -l: Naredibash deluje, kot da bi ga bilo treba poklicati kot prijavno lupino.
  • -r: Če je-r možnost je prisotna, lupina postane omejeno.
  • -s: Če je-s je možnost prisotna, ali če po obdelavi opcij ne ostanejo nobeni argumenti, se ukazi berejo s standardnega vhoda. Ta možnost omogoča nastavitev pozicijskih parametrov pri pozivu interaktivne lupine.
  • -D: Seznam vseh dvostranskih nizov, pred katerimi je$ se natisne na standardni izhod. To so nizi, ki so predmet jezikovnega prevajanja, ko trenutni jezik niC aliPOSIX. To pomeni,n možnost; nobenih ukazov ne bo izveden.
  • - + O shopt_option : shopt_option je ena izmed lupinskih možnosti, ki jih je sprejelashopt zgrajen. Če shopt_option je prisoten,-O nastavi vrednost te možnosti in+ O ga izpusti. Če shopt_option ni na voljo, imena in vrednosti lupinskih možnosti, ki jih je sprejelashopt natisnjeni na standardni izhod. Če je možnost za klicanje + O, je izhod prikazan v obliki, ki se lahko ponovno uporabi kot vhod.
  • --: A-- signalizira konec možnosti in onemogoči nadaljnjo obdelavo opcij. Vsi argumenti po-- se obravnavajo kot imena datotek in argumenti. Argument- je enakovreden--.

Bash razlaga tudi številne znakovne možnosti. Te možnosti morajo biti prikazane v ukazni vrstici, preden se prepoznajo enoparinske možnosti:

  • --dump-po-strings: Enakovreden-D, vendar je izhod v GNU-ju gettext po (prenosni objekt) format datoteke.
  • - dump-strings: Enakovreden-D.
  • - pomoč: Prikaže sporočilo o uporabi na standardnem izhodu in uspešno zaključi.
  • --init-datoteka: mapa in - rcfile mapa : Izvedite ukaze iz mapa namesto standardne osebne datoteke za inicializacijo ~ / .bashrc če je lupina interaktivna.
  • --Vpiši se: Enakovreden-l.
  • - obnašanje: Ne uporabljajte GNU-jareadline knjižnica za branje ukaznih vrstic, ko je lupina interaktivna.
  • - neprofil: Ne preberite sistemske zagonske datoteke / etc / profile ali katere koli osebne datoteke za inicializacijo ~ / .bash_profile , ~ / .bash_login , ali ~ / .profile . Privzeto,bash bere te datoteke, ko se skliče kot prijavna lupina.
  • - NORC: Ne preberite in ne izvajajte osebne datoteke za inicializacijo ~ / .bashrc če je lupina interaktivna. Ta možnost je privzeto vklopljena, če se lupina sklicuje kotsh.
  • - posek: Spremeni vedenjebash kjer se privzeta operacija razlikuje od standarda POSIX, da ustreza standardu ( posix mode ).
  • - omejeno: Lupina postane omejena.
  • -rpm-zahteva: Izdelajte seznam datotek, ki so potrebne za zagon skripta. To pomeni "-n" in veljajo enake omejitve kot preverjanje preverjanja napak pri sestavljanju; Izrezki, testi in evali niso razčlenjeni, zato je mogoče nekatere odvisnosti zamuditi.
  • -verbose: Enakovreden-v.
  • - različica: Prikažejo informacije o različici tega primerkabash na standardni izhod in uspešno izhod.

Argumenti

Če ostanejo argumenti po obdelavi opcije in ne-c niti-s možnost je bila predložena, se domneva, da je prvi argument ime datoteke, ki vsebuje ukaze lupine. Če bash se sklicuje na ta način,$0 je nastavljen na ime datoteke, položajni parametri pa so nastavljeni na preostale argumente.Bash bere in izvršuje ukaze iz te datoteke; potem izstopi.Bashizhodni status je status izhoda zadnjega ukaza, izvedenega v skriptu. Če ni izvedenih nobenih ukazov, je stanje izhoda 0. Najprej se poskusi odpreti datoteka v trenutnem imeniku in, če ni najdena datoteka, potem lupina išče imenike vPATH za scenarij.

Povabilo

A prijavna lupina je tisti, katerega prvi znak ničle je a-, ali pa se je začelo z--Vpiši se možnost.

An interaktivno shell je ena, ki se je začela brez argumentov brez možnosti in brez-c opcija, katere standardni vhod in izhod sta oba povezana s terminali, kot jih določa izostanek (3), ali pa se je začel z-jaz možnost.PS1 je nastavljen in $- vključuje, če je bash interaktiven, tako da skripta lupine ali zagonske datoteke omogoča testiranje tega stanja.

Naslednji odstavki opisujejo, kakobash izvaja svoje zagonske datoteke. Če katera od datotek obstaja, vendar je ni mogoče brati,bash poroča o napaki. Tilde se razširijo v imena datotek, kot je opisano v razširitvi Tilde.

Kdajbash se sklicuje kot interaktivna prijavna lupina ali kot neinteraktivna lupina z--Vpiši se možnost, najprej bere in izvrši ukaze iz datoteke / etc / profile , če ta datoteka obstaja. Po branju te datoteke, jo išče ~ / .bash_profile , ~ / .bash_login , in ~ / .profile v tem vrstnem redu in bere ter izvršuje ukaze iz prvega, ki obstaja in je berljiv. The- neprofil Možnost se lahko uporabi, ko lupina zažene to obnašanje.

Ko zapusti prijavna lupina,bash bere in izvršuje ukaze iz datoteke ~ / .bash_logout , če obstaja.

Ko se zažene interaktivna lupina, ki ni prijavna lupina,bash bere in izvaja ukaze iz ~ / .bashrc , če ta datoteka obstaja. To se lahko zavre z uporabo- NORC možnost. The- rcfile mapa možnost bo prisililabash za branje in izvajanje ukazov iz mapa namesto ~ / .bashrc .

Kdajbash se zažene neinteraktivno - na primer za zagon lupinskega skripta - išče spremenljivkoBASH_ENV v okolju razširi svojo vrednost, če se tam pojavi, in uporablja razširjeno vrednost kot ime datoteke, ki jo je mogoče brati in izvršiti.Bash se obnaša kot da je bil izveden naslednji ukaz:

če je -n "$ BASH_ENV"; potem. "$ BASH_ENV"; fi

ampak vrednostPATH spremenljivka se ne uporablja za iskanje imena datoteke.

Čebash se prikliče z imenomsh, poskuša posnemati začetno vedenje zgodovinskih različicsh čim bolj natančno, tudi v skladu s standardom POSIX. Če se prikliče kot interaktivna prijavna lupina ali neinteraktivna lupina z--Vpiši se možnost, najprej poskuša brati in izvršiti ukaze iz / etc / profile in ~ / .profile , v tem vrstnem redu. The- neprofil možnost za preprečevanje tega vedenja. Ko se prikliče kot interaktivna lupina z imenom sh, bash išče spremenljivkoENV, razširi njegovo vrednost, če je definirana, in uporablja razširjeno vrednost kot ime datoteke, ki jo je mogoče brati in izvršiti. Ker se lupina sklicuje kotsh ne poskuša branja in izvrševanja ukazov iz katere koli druge zagonske datoteke,- rcfile možnost nima učinka. Ne-interaktivna lupina se je sklicevala na imesh ne poskuša prebrati drugih zagonskih datotek. Ko se sklicuje kotsh, bash vstopi posix po zagonu datotek.

Kdajbash se začne v posix način, tako kot pri- posek možnost ukazne vrstice, sledi standardu POSIX za zagonske datoteke. V tem načinu se interaktivne lupine razširijoENV spremenljivke in ukazi se berejo in izvajajo iz datoteke, katere ime je razširjena vrednost. Nobene druge zagonske datoteke se ne preberejo.

Bash poskuša določiti, kdaj jo izvaja oddaljeni ukazni ukaz, navadno rshd . Če bash določa, da jo vodi rshd , bere in izvaja ukaze iz ~ / .bashrc , če ta datoteka obstaja in je berljiva. To ne bo storil, če se bo uveljavil kotsh. The- NORC Možnost se lahko uporabi za zaviranje tega vedenja in- rcfile Možnost se uporabi za prisilitev druge datoteke, ki jo je treba brati, vendar rshd običajno ne pokliče ukazne lupine s temi možnostmi ali dovoljuje, da se jih navede.

Če se lupina zažene z dejanskim ID-jem uporabnika (skupine), ki ni enaka ID-ju pravega uporabnika (skupine), in-p možnost ni dobavljena, nobene zagonske datoteke se ne preberejo, funkcije lupine niso podedovane iz okolja,SHELLOPTS spremenljivka, če se pojavi v okolju, je prezrta in dejanski uporabniški ID je nastavljen na pravi ID uporabnika. Če je-p opcija je na voljo pri klicanju, obnašanje pri zagonu je enako, vendar dejanski uporabniški ID ni ponastavljen.

Opredelitve

V vsem preostalem delu tega dokumenta se uporabljajo naslednje opredelitve:

  • Blank: Prostor ali jeziček.
  • Beseda: Zaporedje znakov, ki jih lupina obravnava kot enoto. Znan tudi kot a žeton.
  • Ime: A beseda sestavljena samo iz alfanumeričnih znakov in podčrtav in začetka z abecednim znakom ali podčrtajem. Imenovano tudi kotidentifikator.
  • Metacharacter: Znak, ki ločuje besede, ko niso uveljavljeni. Ena od naslednjih:| &; () <> space tab
  • Nadzorni operater: A žeton ki izvaja nadzorno funkcijo. To je eden od naslednjih simbolov: || & && ; ;; ( ) |

Rezervirane besede

Rezervirane besede besede, ki imajo poseben pomen za lupino. Naslednje besede so priznane kot pridržane, ko niso uveljavljene in bodisi prva beseda preprostega ukaza bodisi tretja beseda aprimeraaliza ukaz:

! primer naredi elif drugega esac fi za funkcijo, če v izbiri nato, dokler {} čas

Shell slovnica: preprosti ukazi

A preprost ukaz je zaporedje poljubnih spremenljivih nalog, ki mu slediprazno- ločene besede in preusmeritve ter zaključi s nadzorni operater . Prva beseda določa ukaz, ki se bo izvedel, in se prenese kot argument nič. Preostale besede se prenesejo kot argumenti na ukaz, ki se ga je skliceval.

Povratna vrednost a preprost ukaz je njegov izhodni status ali 128+ n če je ukaz prekinjen s signalom n .

Cevovodi

A cevovod je zaporedje enega ali več ukazov, ločenih z znakom|. Oblika za plinovod je čas -p ! ukaz | command2 … .

Standardni izhod ukaz je priključen preko cevi na standardni vhod command2 . Ta povezava se opravi pred preusmeritvami, ki jih določi ukaz.

Če je rezervirana beseda! pred cevovodom je stanje izhodov tega cevovoda logična NOT za status izhoda zadnjega ukaza. V nasprotnem primeru je status plinovoda izhodni status zadnjega ukaza. Lupina čaka, da se vsi ukazi v plinovodu končajo, preden vrnejo vrednost.

Če ječas rezervirana beseda pred cevovodom, podatki, ki so potekli, kot tudi uporabnik in sistem, ki ga porabi njegovo izvedbo, se sporočijo, ko se cevovod konča. The-p možnost spremeni izhodno obliko v tisto, ki jo določi POSIX. TheTIMEFORMAT spremenljivka se lahko nastavi na formatni niz, ki določa, kako naj bodo prikazane informacije o časovnem načrtu.

Vsak ukaz v plinovodu se izvede kot ločen proces (na primer v podnizu).

Seznami

A seznam je zaporedje enega ali več cevovodov, ki jih ločuje eden od operaterjev;, &, &&, ali||, in po izbiri preneha z enim od;, &, ali.

Od teh operaterjev seznama,&& in|| imajo enako prednost, sledijo; in&, ki imajo enako prednost.

Zaporedje ene ali več novih vrstic se lahko prikaže v a seznam Namesto ukaza za ločitev ukazov.

Če upravljalec ukaza prekine ukaz&, lupina izvrši ukaz v ozadje v podrezu. Lupina ne počaka, da bi ukaz končal, stanje vrnitve pa je 0. Zapovedi, ločeni z a; se izvajajo zaporedno; lupina čaka, da se vsak ukaz konča. Stanje vrnitve je stanje izhoda zadnjega izvršenega ukaza.

Nadzorni operaterji&& in|| označi IN seznam in seznamov OR. Seznam IN in ima obliko

command1 && command2

command2 se izvrši, če in samo če, command1 vrne status izhoda nič.

Seznam OR je v obliki

command1 || command2

command2 se izvaja, če in le če command1 vrne status nične nič. Stanje vrnitve seznamov AND in OR je stanje izhoda zadnjega ukaza, izvedenega na seznamu.

Komandni ukazi

A sestavljen ukaz je eno od naslednjih:

(seznam) : seznam se izvaja v podsklopu. Različne naloge in vgrajeni ukazi, ki vplivajo na okolje lupine, po končanem ukazu ne ostanejo v veljavi. Stanje vrnitve je stanje izhoda seznam .

{list; } : seznam se preprosto izvede v trenutnem okolju shell. seznam se mora končati z novo vrstico ali podpičjem. To je znano kot a skupinski ukaz . Stanje vrnitve je stanje izhoda seznam . Upoštevajte, da za razliko od meta-karakterjev( in), { in} so pridržane besede in se mora zgoditi, kadar je dovoljena prepoznavna rezervirana beseda. Ker ne povzročajo odmora, jih je treba ločiti od seznam s presledki.

((izraz)) : The izraz se ovrednoti v skladu s pravili, opisanimi pod Aritmetična evalvacija. Če je vrednost izraza ničelna, je stanje vračanja 0; sicer je status vrnitve 1. To je točno enakopusti ' izraz '.

izraz : Vrne status 0 ali 1, odvisno od ocene pogojnega izraza izraz . Izrazi so sestavljeni iz primarnih primerov, opisanih spodaj pod Pogojni izrazi. Razdelitev besed in širjenje poti se ne izvajajo med besedami in; ekspanzijo tilde, parametrom in spremenljivim širjenjem, aritmetično ekspanzijo, zamenjavo ukazov, zamenjavo postopka in odstranitev citira.

Ko== in!= uporabljeni operaterji, niz na desni strani operaterja se šteje za vzorec in se ujema s pravili, opisanimi podUjemanje vzorcev. Povratna vrednost je 0, če se niz ujema ali se ne ujema z vzorcem, oziroma 1 drugače. Vsak del vzorca se lahko navede, tako da ga je treba ujemati kot niz.

Izrazi se lahko kombinirajo z naslednjimi operatorji, ki so navedeni po padajočem vrstnem redu:

  • (izraz): Vrne vrednost izraz . To se lahko uporabi za nadomeščanje normalne prednostne naloge operaterjev.
  • ! expressio n: Res je, če izraz je napačna.
  • izraz1 && izraz2 : Res je, če sta oba izraz1 in izraz2 resnično.
  • izraz1 || izraz2 : Res, če bodisi izraz1 ali izraz2 je res.

The&& in|| operaterji ne vrednotijo izraz2 če je vrednost izraz1 zadostuje za določitev povratne vrednosti celotnega pogojnega izraza.

  • za ime v beseda ; storiti seznam ; Končano: Seznam besed, ki sledijov je razširjen in ustvarja seznam elementov. Spremenljivka ime je nastavljen na vsak element tega seznama in seznam se izvede vsakič. Če jev beseda je izpuščen,za ukaz se izvrši seznam enkrat za vsak določen položajni parameter. Stanje vrnitve je stanje izhoda zadnjega ukaza, ki se izvaja. Če razširitev predmetov, ki sledijov prikaže prazen seznam, se ne izvajajo ukazi in stanje vrnitve je 0.
  • za (( expr1 ; expr2 ; expr3 )) ; storiti seznam ; Končano: Prvič, aritmetični izraz expr1 se ovrednoti v skladu s pravili, opisanimi podAritmetična evalvacija. Aritmetični izraz expr2 se nato ponovno ovrednoti, dokler ne oceni nič. Vsakič expr2 vrednoti vrednost, ki ni enaka nič, seznam se izvaja in aritmetični izraz expr3 Ocenjujemo. Če je kateri koli izraz izpuščen, se obnaša tako, kot da oceni vrednost 1. Povratna vrednost je stanje izhoda zadnjega ukaza v seznam ki je izveden ali napačen, če kateri koli izraz ni veljaven.
  • izberite ime v beseda ; storiti seznam ; Končano: Seznam besed, ki sledijov je razširjen in ustvarja seznam elementov. Skupina razširjenih besed je natisnjena na standardni napaki, vsaka pred številko. Če jev beseda je izpuščen, pozicijski parametri so natisnjeni. The PS3 nato se prikaže poziv in črta od standardnega vhoda. Če je vrstica sestavljena iz številke, ki ustreza eni od prikazanih besed, potem je vrednost ime je nastavljena na to besedo. Če je črta prazna, se znova prikažejo besede in poziv. Če je EOF prebrisan, ukaz zaključi. Katera koli druga vrednost bere vzroke ime da se nastavi na nič. Črta se shrani v spremenljivkoODGOVORI. The seznam se izvede po vsakem izboru doodmor ukaz je izveden. Stanje izhodaizberite je izhodni status zadnjega ukaza, ki se izvaja v seznam ali nič, če noben ukaz ni bil izveden.
  • primera beseda v ( vzorec | vzorec : Aprimera ukaz se najprej širi beseda , in ga poskuša uskladiti z vsakim vzorec po drugi strani pa z istimi pravili ujemanja kot za razširitev poti. Ko najdete tekmo, ustreza seznam se izvaja. Po prvem tekmovanju ni poskusov. Stanje izhoda je nič, če se vzorec ne ujema. V nasprotnem primeru gre za status izhoda zadnjega ukaza, ki je bil izveden v seznam .
  • če seznam ; potem seznam; in elif seznam ; potem seznam ; … drugače seznam ; fi: Theče seznam se izvaja. Če je stanje izhoda nič, jepotem seznam se izvaja. V nasprotnem primeru, vsak elif seznam se izvrši v zameno in če je njegov izhodni izhod nič, ustreznipotem seznam se izvrši in ukaz se konča. V nasprotnem primerudrugače seznam se izvede, če je prisoten. Stanje izhoda je stanje izhoda zadnjega izvršenega ukaza ali nič, če noben pogoj ni preizkušen.
  • medtem seznam ; storiti seznam ; Končano in do seznam ; storiti seznam ; Končano: Themedtem ukaz neprekinjeno izvajastoriti seznam dokler je zadnji ukaz v seznam vrne status izhoda nič. Thedo ukaz je identičen zmedtem ukaz, razen da je preskus negiran; nastoriti seznam se izvaja, dokler je zadnji ukaz v seznam vrne status nične nič. Stanje izhodamedtem indo ukazi so izhodni status zadnjegastoriti seznam ukaz, izveden ali nič, če noben ni bil izveden.
  • funkcijo ime () { seznam ; }: To definira funkcijo imenovano ime . The telo funkcije je seznam ukazov med {in}. Ta seznam se izvaja kadarkoli ime je podan kot ime preprostega ukaza. Stanje izhoda funkcije je stanje izhoda zadnjega ukaza, ki se izvaja v telesu.

Komentarji

V neinteraktivni lupini ali interaktivni lupini, v kateri je interactive_comments možnost doshopt vgrajen je omogočen, beseda se začne s# povzroči, da se ta beseda in vsi preostali znaki v tej vrstici ne upoštevajo. Interaktivna lupina brezinteractive_comments omogočena možnost ne dovoljuje komentarjev. The interactive_comments možnost je privzeto v interaktivnih lupinah.

Citiranje

Citiranje se uporablja za odstranitev posebnega pomena nekaterih znakov ali besed v lupini. Ponudba se lahko uporabi za onemogočanje posebne obravnave posebnih znakov, za preprečitev, da so pridržane besede prepoznane kot takšne in za preprečevanje širjenja parametrov.

Vsak od metacharacters zgoraj navedene podOpredelitve ima poseben pomen za lupino in jo je treba navesti, če se želi predstaviti.

Ko se uporabljajo zmogljivosti razširitve zgodovine ukazov, razširitev zgodovine znak, običajno!, je treba navesti, da se prepreči širitev zgodovine.

Obstajajo trije mehanizmi citiranja: pobegni znak , enojne narekovaje in dvojne narekovaje.

Neocenjena poševnica () ali je pobegni znak . Ohranjuje dobesedno vrednost naslednjega znaka, ki sledi z izjemo . Če se pojavi par in poševnica ni sama citirana, se obravnava kot nadaljevanje vrstice (to pomeni, da je odstranjeno iz vhodnega toka in dejansko zanemarjeno).

Zaprti znaki v posameznih narekovajih ohranjajo dobesedno vrednost vsakega znaka znotraj ponudb. En sam citat se ne sme pojaviti med posameznimi ponudbami, tudi če je pred njim poševnica.

Zaprti znaki v dvojnih narekovajih ohranjajo dobesedno vrednost vseh znakov znotraj ponudb, z izjemo$, ', in. Znaki$ in' ohranijo svoj poseben pomen v dvojnih narekovajih. Nasprotno poševnico zadrži svoj poseben pomen le, če mu sledi eden od naslednjih znakov:$, ', ', , ali. V dvojnih narekovajih lahko navedemo dvojno ponudbo, ki ju predhodi, s poševnico.

Posebni parametri* in@ imajo poseben pomen v dvojnih narekovajih.

Besede obrazca$' niz "se obravnavajo posebej. Beseda se razširi niz , z zamenjanimi črkami s poševnico nazaj, kot je določeno v standardu ANSI C. Zaporedna izhodna mesta backslash, če so prisotna, se dekodirajo na naslednji način:

  • a: opozorilo (zvonec)
  • b: backspace
  • e: ušesni znak
  • f: obrazec krme
  • n: nova vrstica
  • r: prevoz vrnitev
  • t: horizontalni jeziček
  • v: navpični zavihek
  • \: poševnica
  • ': enojna ponudba
  • nnn : osem-bitni znak, katerega vrednost je osmiška vrednost nnn (ena do tri številke)
  • x HH : osem-bitni znak, katerega vrednost je šestnajstiška vrednost HH (ena ali dve šestnajstiški številki)
  • c x : kontrolno- x znak

Razširjeni rezultat je en citiran, kot da znak za dolar ni bil prisoten.

Dvomestni niz, ki mu sledi znak za dolar ($) povzroči, da se niz prevede glede na trenutni jezik. Če je trenutno lokalnoC aliPOSIX, se znak za dolar ne upošteva. Če je niz preveden in nadomeščen, je zamenjava dvojno citirana.

Parametri

A parameter je podjetje, ki shranjuje vrednosti. Lahko je a ime , številko ali enega od posebnih znakov, naštetih podPosebni parametri. Za namene lupine, a spremenljivka je parameter, ki ga označuje a ime . Spremenljivka ima a vrednost in nič ali več lastnosti . Atributi se dodelijo z uporaboizjavi vgrajen ukaz.

Parameter je nastavljen, če je dodeljena vrednost. Neveljavni niz je veljavna vrednost. Ko je spremenljivka nastavljena, je morda neuporabljena samo z uporabounset vgrajen ukaz.

A spremenljivka se lahko dodeli z izjavo o obrazcu: ime = vrednost

Če vrednost ni podana, je spremenljivka dodeljena ničelni niz. Vse vrednosti podvržemo tilde ekspanziji, parametru in razširitveni ekspanziji, zamenjavi ukazov, aritmetični ekspanziji in odstranitvi citatov. Če ima spremenljivka svojcelo število potem nastavite atribut vrednost je podvržena aritmetični ekspanziji, tudi če se razširitev $ ((…)) ne uporablja. Razdelitev besed se ne izvaja, z izjemo'$@' kot je razloženo podPosebni parametri. Razširitev poti se ne izvede. Izjave o dodelitvi se lahko pojavijo tudi kot argumenti zaizjavi, tipi, izvoz, le za branje, in lokalno zgrajene ukaze.

Pozicijski parametri

A pozicijski parameter je parameter, označen z eno ali več števkami, razen enojne številke 0. Položajni parametri se dodelijo iz argumentov lupine, kadar se zanjo kličejo, in se lahko prerazporedijo z uporabonastavite vgrajen ukaz. Položajnim parametrom ni mogoče dodeliti izjav o dodelitvi. Položajni parametri se začasno zamenjajo, ko se izvaja funkcija ukazne lupine.

Če se pozicijski parameter, sestavljen iz več kot ene številke, razširi, ga je treba zapreti.

Posebni parametri

Lupina obravnava več parametrov posebej. Te parametre je mogoče sklicevati le; dodelitev jim ni dovoljena.

  • *: Se razširi na pozicijske parametre, začenši z ene. Ko se razširitev zgodi v dvojnih narekovajih, se razširi na eno besedo z vrednostjo vsakega parametra, ločenega s prvim znakomIFS posebna spremenljivka. To pomeni, da "$*"je enakovreden"$1 c $2 c ", kje c je prvi znak vrednostiIFS spremenljivka. ČeIFS ni nastavljen, parametri so ločeni s presledki. ČeIFS je null, parametri so združeni brez vmesnih ločevalcev.
  • @: Se razširi na pozicijske parametre, začenši z ene. Ko pride do razširitve znotraj dvojnih narekov, se vsak parameter razširi v ločeno besedo. To pomeni, da "$@"je enakovreden"$1' '$2"… Ko ni nobenih pozicijskih parametrov,"$@"in$@razširiti na nič (odstranjeni so).
  • #: Se razširi na število pozicijskih parametrov v decimalki.
  • ?: Se razširi v stanje nedavno izvedenega plavajočega cilja v ospredju.
  • -: Razširi na trenutne možnosti za zaščito, kot je določeno pri klicu, s straninastavite zgrajen ukaz ali tisti, ki jih je določila lupina, kot je npr-jaz možnost.
  • $: Razširi na ID procesa lupine. V pod-zbirki () se razširi na identifikacijsko številko procesa trenutne ukazne lupine, in ne podomrežja.
  • !: Razširi na identifikacijsko številko procesa zadnjega izvršenega ukaza (asinhroni) v ozadju.
  • 0: Razširi na ime skripte ali lupine. To je nastavljeno na začetek lupine. Čebash se sklicuje z datoteko ukazov,$0 je nastavljena na ime te datoteke. Čebash se začne s-c potem možnost$0 je nastavljen na prvi argument po nizu, ki se bo izvedel, če je prisoten. V nasprotnem primeru je nastavljeno na ime datoteke, ki se uporablja za klicanjebash, kot je podana z argumentom nič.
  • _: Pri zagonu lupine nastavite absolutno ime datoteke lupine ali skriptne lupine, ki se izvaja, kot je navedeno na seznamu argumentov. Nato se po razširitvi razširi na zadnji argument prejšnjega ukaza. Prav tako nastavite na celotno ime datoteke vsakega ukaza, izvedenega in postavljenega v okolje, ki se izvaža v ta ukaz. Pri preverjanju pošte ta parameter vsebuje ime poštne datoteke, ki se trenutno preverja.

Shell spremenljivke

Oboje nastavi naslednje spremenljivke:

BASH: Razširi na celotno ime datoteke, ki se uporablja za uveljavitev tega primerkabash.

BASH_VERSINFO: Spremenljivka matrike, katere člani imajo informacije o različici tega primerka bash. Vrednosti, dodeljene članom matrike, so naslednje:

  • BASH_VERSINFO 0: glavna številka različice ( sprostitev )
  • BASH_VERSINFO 1: manjša številka različice ( različico )
  • BASH_VERSINFO 2: raven obliža
  • BASH_VERSINFO 3: Različica gradnje
  • BASH_VERSINFO 4: status sproščanja ( beta1, na primer)
  • BASH_VERSINFO 5: VrednostMACHTYPE

BASH_VERSION: Razširi v niz, ki opisuje različico tega primerkabash.

COMP_CWORD: Indeks v$ {COMP_WORDS} besede, ki vsebuje trenutni položaj kazalca. Ta spremenljivka je na voljo le v funkcijah lupine, na katere se sklicujejo programirljivi objekti za dokončanje.

COMP_LINE: Trenutna ukazna vrstica. Ta spremenljivka je na voljo samo v funkcijah lupine in zunanjih ukazih, na katere se kliče programirljiva oprema za dokončanje.

COMP_POINT: Indeks trenutnega položaja kazalca glede na začetek trenutnega ukaza. Če je trenutni položaj kurzorja na koncu trenutnega ukaza, je vrednost te spremenljivke enaka$ {# COMP_LINE}. Ta spremenljivka je na voljo samo v funkcijah lupine in zunanjih ukazih, na katere se kliče programirljiva oprema za dokončanje.

COMP_WORDS: Spremenljivka matrike, sestavljena iz posameznih besed v trenutni ukazni vrstici. Ta spremenljivka je na voljo le v funkcijah lupine, na katere se sklicujejo programirljivi objekti za dokončanje.

DIRSTACK: Spremenljivka matrike, ki vsebuje trenutno vsebino v skladu imenikov. Imeniki se pojavijo v svežnju v vrstnem redu, v katerem jih prikazujedirs zgrajen. Dodelitev članov te spremenljivke matrike se lahko uporabi za spreminjanje imenikov, ki so že v paketu, ampak zapushd inpopd Vgrajene morajo biti uporabljene za dodajanje in odstranjevanje imenikov. Naloga te spremenljivke ne bo spremenila trenutnega imenika. ČeDIRSTACK je neusklajen, izgubi svoje posebne lastnosti, tudi če je nato ponastavljen.

EUID: Se razširi na dejansko uporabniško ID trenutnega uporabnika, inicializiran ob zagonu ukazne lupine. Ta spremenljivka je samo enkrat.

FUNCNAME: Ime katere koli trenutno izvršene funkcije lupine. Ta spremenljivka obstaja samo, ko se izvaja funkcija ukazne lupine. Dodelitve vFUNCNAME nimajo učinka in vrnejo status napake. ČeFUNCNAME je neusklajen, izgubi svoje posebne lastnosti, tudi če je nato ponastavljen.

SKUPINE: Spremenljivka matrike, ki vsebuje seznam skupin, od katerih je trenutni uporabnik član. Dodelitve vSKUPINE nimajo učinka in vrnejo status napake. ČeSKUPINE je neusklajen, izgubi svoje posebne lastnosti, tudi če je nato ponastavljen.

HISTCMD: Številka zgodovine ali indeks v seznamu zgodovine trenutnega ukaza. ČeHISTCMD je neusklajen, izgubi svoje posebne lastnosti, tudi če je nato ponastavljen.

HOSTNAME: Samodejno nastavite na ime trenutnega gostitelja.

HOSTTYPE: Samodejno nastavite na niz, ki enolično opisuje vrsto naprave, na katerem jebash se izvaja. Privzeta nastavitev je odvisna od sistema.

LINENO: Vsakič, ko se ta parameter navede, lupina nadomesti decimalno številko, ki predstavlja trenutno zaporedno številko vrstice (začenši z 1) znotraj skripte ali funkcije. Če ni v skripti ali funkciji, nadomestljena vrednost ni zagotovljena za smiselno. ČeLINENO je neusklajen, izgubi svoje posebne lastnosti, tudi če je nato ponastavljen.

MACHTYPE: Samodejno nastavite na niz, ki v celoti opisuje vrsto sistema, na katerembash se izvaja v standardnem GNU-ju CPU-podjetje-sistem formatu. Privzeta nastavitev je odvisna od sistema.

OLDPWD: Prejšnji delovni imenik, kot ga je nastavilcd ukaz.

OPTARG: Vrednost zadnje možnosti izbire, ki jo je obdelalgetopts vgrajen ukaz.

OPTIND: Indeks naslednjega argumenta, ki ga mora obdelatigetopts vgrajen ukaz.

OSTYPE: Samodejno nastavite na niz, ki opisuje operacijski sistem, na katerembash se izvaja. Privzeta nastavitev je odvisna od sistema.

PIPESTATUS: Spremenljivka matrike, ki vsebuje seznam vrednosti izhodnih statusov iz procesov v najbolj nedavno izvedenem plinovodu v ospredju, ki lahko vsebuje samo en sam ukaz.

PPID: ID procesa matične lupine. Ta spremenljivka je samo enkrat.

PWD: Trenutni delovni imenik, kot ga je nastavilcd ukaz.

NAKLJUČEN: Vsakič, ko se ta parameter sklicuje, se generira naključno celo število med 0 in 32767. Zaporedje naključnih števil se lahko inicializira tako, da se vrednost dodeli NAKLJUČEN. ČeNAKLJUČEN je neusklajen, izgubi svoje posebne lastnosti, tudi če je nato ponastavljen.

ODGOVORI: Nastavi na linijo vnosa, ki jo preberepreberite vgrajen ukaz, če ni podan noben argument.

SECONDS: Vsakokrat, ko se sklicuje na ta parameter, se vrne število sekund, odkar je povrnjena ukazna lupina. Če je vrednost dodeljenaSECONDS, vrednost, vrnjena pri naslednjih referencah, je število sekund od dodelitve in dodeljena vrednost. Če SECONDS je neusklajen, izgubi svoje posebne lastnosti, tudi če je nato ponastavljen.

SHELLOPTS: Seznam ločenih možnosti ukazne lupine. Vsaka beseda na seznamu je veljaven argument za-o možnost donastavite vgrajen ukaz. Možnosti, ki se pojavljajo vSHELLOPTS so tiste, o katerih poročajo kot naprej zset -o. Če je ta spremenljivka v okolju, kobash se bo zagnala, vsaka možnost lupine na seznamu bo omogočena pred branjem zagonskih datotek. Ta spremenljivka je samo enkrat.

SHLVL: Povečana z enim vsakič, ko je bil primerbash se začne.

UID: Razširi na uporabniški ID trenutnega uporabnika, inicializiran ob zagonu ukazne lupine. Ta spremenljivka je samo enkrat.

Oboje uporablja naslednje spremenljivke. V nekaterih primerih,bash določi privzeto vrednost spremenljivke; ti primeri so zabeleženi.

BASH_ENV: Če je ta parameter nastavljen, ko jebash izvaja lupinski skript, njegova vrednost se razlaga kot ime datoteke, ki vsebuje ukaze za inicializacijo lupine, kot je v ~ / .bashrc . Vrednost BASH_ENV je podvržena razširitvi parametrov, zamenjavi ukazov in aritmetični ekspanziji, preden se razlaga kot ime datoteke.PATH se ne uporablja za iskanje rezultirajočega imena datoteke.

CDPATH: Pot iskanja zacd ukaz. To je seznam imenikov, ločenih s kolono, v katerem lupina išče ciljne imenike, ki jih določicd ukaz. Vzorec vrednosti je ".: ~: / Usr".

KOLONE: Uporablja gaizberite vgrajen ukaz za določanje širine terminala pri tiskanju izbirnih seznamov. Samodejno nastavite po prejemu potrdila SIGWINCH.

ZDRUŽITI: Spremenljivka polja, iz katere jebash bere možne dokončanja, ki jih generira funkcija lupine, na katero se sklicuje programabilni objekt za dokončanje.

FCEDIT: Privzeti urejevalnik zafc vgrajen ukaz.

FIGNORE: Seznam končnih nastavkov, ki jih ločite za debelo črevo, če želite prezreti pri opravljanju filename. Ime datoteke, katere pripona se ujema z enim od vnosov vFIGNORE je izključen s seznama ujemajočih se imenikov. Vzorec vrednosti je ".o: ~".

GLOBIGNORE: Seznam vzorcev, ločenih od debelega črk, ki določa niz imen datotek, ki jih je treba prezreti s širitvijo poti. Če se ime datoteke, ki ga ujema vzorec razširitve poti, se tudi ujema z enim od vzorcev vGLOBIGNORE, se odstrani s seznama zadetkov.

HISTCONTROL: Če je nastavljen na vrednost ignorespace , vrstice, ki se začnejo z aprostor znak ni vpisan na seznamu zgodovine. Če je vrednost nastavljena na vrednost ignoredups , vrstice, ki se ujemajo z zadnjo zgodovinsko črto, niso vnesene. Vrednost ignorebot združuje dve možnosti. Če je unset ali če je nastavljena na katero koli drugo vrednost kot zgoraj, so vse vrstice, ki jih berljivi parser, shranjene na seznamu zgodovine, ob upoštevanju vrednostiHISTIGNORE. Funkcijo te spremenljivke nadomešča HISTIGNORE. Druga in naslednja vrstica ukaza multi-line compound niso preskušena in se v zgodovino dodajajo ne glede na vrednostHISTCONTROL.

HISTFILE: Ime datoteke, v kateri je shranjena zgodovina ukazov. Privzeta vrednost je ~ / .bash_history . Če je unset, zgodovina ukazov ni shranjena, ko interaktivna lupina zapusti.

HISTFILIZIRATI: Največje število vrstic v datoteki z zgodovino. Ko je tej spremenljivki dodeljena vrednost, se datoteka z zgodovino skrajša, če je potrebno, da ne vsebuje več kot to število vrstic. Privzeta vrednost je 500. Datoteka z zgodovino je tudi obrnjena na to velikost, ko jo zapisujete, ko interaktivna lupina zapusti.

HISTIGNORE: Seznam vzorcev, ločenih s kolonijami, ki se uporabljajo za odločitev, katere ukazne vrstice je treba shraniti na seznamu zgodovine. Vsak vzorec je zasidran na začetku vrstice in se mora ujemati s celotno črto (brez implicitnih "*"je priložen). Vsak vzorec se preskusi glede na črto po pregledih, ki jih določiHISTCONTROL se uporabljajo. Poleg običajnih znakov vzorca lupine, "&se ujema s prejšnjo zgodovino. "&"se lahko uniči s poševnico; pred poskusom tekme se odstrani poševnica. Druga in naslednja vrstica ukaza multi-line compound niso preskušena in se dodajajo v zgodovino ne glede na vrednostHISTIGNORE.

VSAKOST: Število ukazov, ki jih je treba zapomniti v zgodovini ukazov. Privzeta vrednost je 500.

HOME: Domači imenik trenutnega uporabnika; privzeti argument zacd vgrajen ukaz. Vrednost te spremenljivke se uporablja tudi pri ekspanziji tilde.

HOSTFILE: Vsebuje ime datoteke v isti obliki kot / etc / hosts ki jo je treba brati, ko lupina potrebuje za dokončanje imena gostitelja. Seznam možnih dokončanj imena gostitelja se lahko spremeni med izvajanjem lupine; pri naslednjem zagonu imena gostitelja po spremembi vrednosti,bash dodaja vsebino nove datoteke na obstoječi seznam. Če HOSTFILE je nastavljen, vendar nima nobene vrednosti,bash poskusi brati / etc / hosts da dobite seznam možnih končnic imena gostitelja. KdajHOSTFILE ni nastavljen, seznam gostiteljev je izbrisan.

IFS: The Notranji separator polja se uporablja za razcepitev besed po razširitvi in ​​razdelitev vrstic v besede zpreberite vgrajen ukaz. Privzeta vrednost je "''.

IGNOREEOF: Nadzoruje delovanje interaktivne lupine ob prejemuEOF znak kot edini vložek. Če je nastavljena, je vrednost število zaporednihEOF znake, ki jih morate najprej vtipkati kot prvi znaki v vhodni vrsticibash izstopa. Če spremenljivka obstaja, vendar nima številske vrednosti ali nima nobene vrednosti, je privzeta vrednost 10. Če ne obstaja,EOF označuje konec vnosa v lupino.

INPUTRC: Ime datoteke zareadline zagonsko datoteko, nadomešča privzeto ~ / .inputrc .

LANG: Uporablja se za določitev kategorije kategorij za katero koli kategorijo, ki ni posebej izbrana s spremenljivko, ki se začne zLC_.

LC_ALL: Ta spremenljivka preglasi vrednostLANG in vse drugeLC_ spremenljivka, ki določa kategorijo locale.

LC_COLLATE: Ta spremenljivka določa vrstni red primerjav, ki se uporablja pri razvrščanju rezultatov razširitve poti in določa vedenje izrazov razdalj, razredov enakovrednosti in zbirnih sekvenc znotraj razširitve poti in ujemanja vzorcev.

LC_CTYPE: Ta spremenljivka določa interpretacijo znakov in obnašanje znakovnih razredov znotraj razširitve poti in ujemanja vzorcev.

LC_MESSAGES: Ta spremenljivka določa locale, ki se uporablja za prevajanje dvomestnih nizov, pred katerimi je a$.

LC_NUMERIC: Ta spremenljivka določa kategorijo lokalnih kategorij, ki se uporablja za oblikovanje števil.

LINIJE: Uporablja gaizberite vgrajen ukaz za določitev dolžine stolpcev za izbor seznamov za izbiro. Samodejno nastavite po prejemu potrdila SIGWINCH.

MAIL: Če je ta parameter nastavljen na ime datoteke in naMAILPATH spremenljivka ni nastavljena,bashobvesti uporabnika o prihodu pošte v navedeni datoteki.

MAILCHECK: Določa, kako pogosto (v sekundah)bash preverjanje pošte. Privzeta vrednost je 60 sekund. Ko je čas za preverjanje pošte, lupina to naredi, preden se prikaže primarni poziv. Če je ta spremenljivka unset ali nastavljena na vrednost, ki ni številka, ki je večja ali enaka nič, lupina onemogoči preverjanje pošte.

MAILPATH: Seznam datotek z imeni datotek, ki jih je treba preveriti za pošto. Sporočilo, ki ga želite natisniti, ko je pošta prispe v določeno datoteko, lahko določite tako, da ime sporočila iz sporočila ločite z '?'. Ko se uporablja v besedilu sporočila,$_ se razširi na ime trenutne poštne datoteke. Primer:

MAILPATH = '/ var / mail / bfox? "Imate pošto": ~ / shell-mail? "$ _ Ima pošto!" "

Bash dobi privzeto vrednost za to spremenljivko, vendar je lokacija uporabniških poštnih datotek, ki jo uporablja, odvisna od sistema (/ var / mail /$ USER).

OPTERR: Če je nastavljena na vrednost 1,bash prikaže sporočila o napakah, ki jih generiragetopts vgrajen ukaz.OPTERR se inicializira v 1 vsakič, ko se sklicuje lupina ali se izvede lupinski skript.

PATH: Pot iskanja za ukaze. To je seznam imenikov, ločenih s kolono, v katerem lupina išče ukaze. Privzeta pot je odvisna od sistema in jo nastavi skrbnik, ki ga namestibash. Skupna vrednost je "/ usr / gnu / bin: / usr / local / bin: / usr / ucb: / bin: / usr / bin :."

POSIXLY_CORRECT: Če je ta spremenljivka v okolju, kobash se začne, vstopi lupina posix mode pred branjem zagonskih datotek, kot če- posek je bila priložena možnost klicanja. Če je nastavljena, ko lupina deluje,bash omogoča posix mode kot da ukaz nastavi -o posix so bili usmrčeni.

PROMPT_COMMAND: Če je nastavljena, se vrednost pred izvedbo vsakega primarnega poziva izvede kot ukaz.

PS1: Vrednost tega parametra je razširjena in se uporablja kot primarni pozivni niz. Privzeta vrednost je " s- v $''.

PS2: Vrednost tega parametra je razširjena, kot je sPS1 in se uporablja kot sekundarni pozivni niz. Privzeto je "> ''.

PS3: Vrednost tega parametra se uporablja kot poziv zaizberite ukaz.

PS4: Vrednost tega parametra je razširjena, kot je sPS1, in vrednost se natisne pred vsakim ukazombash prikaže med izvajanjem sledi. Prvi znakPS4 se po potrebi večkrat ponovi, da označuje več ravni izpraznitve. Privzeto je "+ ''.

TIMEFORMAT: Vrednost tega parametra se uporablja kot niz formatov, ki določa, kako so podatki o časovnem načrtu za cevovode predfiksirani zčas mora biti prikazana rezervirana beseda. The % znak uvaja zaporedje pobega, ki se razširi na časovno vrednost ali druge informacije. Zaporne poti in njihovi pomeni so naslednji. Nosilci označujejo neobvezne dele.

  • %%: Dobesedno%
  • % str l R: Pretečeni čas v sekundah
  • % str l U: število CPU sekund, porabljenih v uporabniškem načinu
  • % str l S: število CPU sekund, porabljenih v sistemskem načinu
  • % P: Odstotek CPU, izračunan kot (% U +% S) /% R

Neobvezno str je številka, ki označuje natančnost , število delnih številk za decimalno vejico. Vrednost 0 ne povzroči nobene decimalne ali frakcijske vrednosti. Največ tri mesta po natančni decimalni vejici; vrednosti str več kot 3 se spremenijo v 3. Če str ni določen, se uporablja vrednost 3.

Neobveznol Določa daljši format, vključno z minutami obrazca MM m SS . FF s. Vrednost str ugotavlja, ali je delež vključen ali ne.

Če ta spremenljivka ni nastavljena,bash deluje, kot da bi imela vrednost $ ' nreal t% 3lR nuser t% 3lU nsys% 3lS'. Če je vrednost nič, se ne prikažejo podatki o času. Ko je prikazan niz formatov, se dodaja nova linija.

TMOUT: Če je nastavljen na vrednost, ki je večja od nič,TMOUT se obravnava kot privzeta zakasnitev zapreberite zgrajen. Theizberite se ukaz prekine, če vhod ni prispelTMOUT sekunde, ko vhod prihaja iz terminala.V interaktivni lupini se vrednost razlaga kot število sekund, ki jih je treba čakati po vnosu po izdaji primarnega pozivnika.Bash se konča, ko čaka na to število sekund, če vhod ne prispeva.

auto_resume: Ta spremenljivka nadzira, kako lupina stori interakcijo z uporabnikom in nadzorom dela. Če je ta spremenljivka nastavljena, se enostavni ukazi z enim samim besedilom brez preusmeritev obravnavajo kot kandidati za nadaljevanje obstoječega ustavljenega dela. Ni dvoumnosti dovoljeno. Če je več znakov, ki se začnejo z vnesenim nizom, je izbrano zadnje delo. The ime ustavljenega dela, v tem kontekstu je ukazna vrstica, ki se uporablja za zagon. Če je vrednost nastavljena na vrednost točno , mora dobavljena vrstica natanko ustrezati imenu zaprtega dela; če je nastavljen na podstrani , mora dobavljena vrstica ustrezati podstrani imena ustavljenega dela. The podstrani vrednost zagotavlja funkcionalnost, podobna%? identifikator delovnega mesta. Če je nastavljena na katero koli drugo vrednost, mora biti dobavljeni niz predpona imena zaustavljenega posla; to zagotavlja funkcionalnost, ki je podobna% identifikator delovnega mesta.

histarje: Dva ali tri znake, ki nadzorujejo razširitev zgodovine in tokenizacijo. Prvi znak je razširitev zgodovine znak, znak, ki signalizira začetek razširitve zgodovine, običajno "!". Drugi znak je hitra zamenjava znak, ki se uporablja kot skrajšava za ponovitev prejšnjega vnesenega ukaza, ki nadomesti en niz za drugega v ukazu. Privzeto je "^". Izbirni tretji znak je znak, ki označuje, da je preostanek vrstice komentar, če ga najdemo kot prvi znak besede, običajno "#". Značilnost komentarja zgodovine povzroči, da se zamenjava zgodovine preskoči za preostale besede v vrstici. To ne pomeni, da razčlenjevalnik lupine obravnava preostanek vrstice kot komentar.

Nizi

Bash ponuja enodimenzionalne spremenljivke nizov. Vsaka spremenljivka se lahko uporabi kot matrika; na izjavi zgrajena bo izrecno deklarirala matriko. Maksimalna omejitev velikosti polja in nobena zahteva, da se člani indeksirajo ali dodeljujejo nepretrgoma. Nizi se indeksirajo z integerji in temeljijo na nič.

Matrika se samodejno ustvari, če je katera koli spremenljivka dodeljena za uporabo sintakse ime indeks = vrednost . The indeks se obravnava kot aritmetični izraz, ki mora ovrednotiti na število, ki je večje ali enako nič. Če želite izrecno deklarirati matriko, uporabiteizjavi -a ime . izjavi -a ime indeks je prav tako sprejet; na indeks se zanemari. Atributi lahko določite za spremenljivko matrike z uporaboizjavi in le za branje zgrajena. Vsak atribut velja za vse člane matrike.

Nizi se dodelijo za uporabo sestavljenih nalog formule ime =(vrednost 1 … vrednost n ), kjer je vsak vrednost je v obliki indeks = niz . Samo niz je potrebno. Če so priloženi dodatni oklepaji in indeksni indeksi, se temu indeksu dodeli; drugače je indeks dodeljenega elementa zadnji indeks, ki ga dodeli izjava plus ena. Indeksiranje se začne na nič. To sintakso sprejema tudiizjavi zgrajen. Elementi posamezne matrike se lahko dodelijo za uporabo ime indeks = vrednost sintaksa.

Vsak element matrike se lahko sklicuje z uporabo $ { ime indeks }. Za preprečevanje konfliktov s širjenjem poti potrebujete zavore. Če indeks je@ ali*, se beseda razširi na vse člane ime . Ti indeksi se razlikujejo samo, če se beseda prikaže v dvojnih narekovajih. Če je beseda dvojno citirana, $ { ime *} se razširi na eno besedo z vrednostjo vsakega matričnega člana, ločenega s prvim znakomIFS posebne spremenljivke in $ { ime @} razširi vsak element ime na ločeno besedo. Ko ni članov matrike, $ { ime @} se razširi na nič. To je analogno razširitvi posebnih parametrov* in@. ${# ime indeks } se razširi na dolžino $ { ime indeks }. Če indeks je* ali@, je širitev število elementov v matriki. Sklicevanje spremenljivke array brez indeksa je enako ničlo referenčnega elementa.

Theunset Vgrajen se uporablja za uničenje nizov.Unset ime indeks uniči element matrike na indeksu indeks . Unset ime , kje ime je matrika aliunset ime indeks , kje indeks je* ali@, odstranjuje celotno matriko.

Theizjavi, lokalno, inle za branje zgrajena vsak sprejme a-a možnost določiti matriko. Thepreberite builtin sprejema a-a možnost dodelitve seznama besed, ki jih berete iz standardnega vhoda v matriko. Thenastavite inizjavi vgrajuje vrednosti vrednosti matričnega prikaza na način, ki jim omogoča ponovno uporabo kot dodelitev.

Razširitev

Razširitev se izvaja v ukazni vrstici, potem ko je razdeljena na besede. Izvedenih je sedem vrst razširitev: razširitev razširitve, širjenje tilde, razširitev spremenljivk, zamenjava ukazov, aritmetična ekspanzija, delitev besed in razširitev poti.

Vrstni red razširitev je: razširitev zvez, razširitev tilde, parametrična razširitev, aritmetična ekspanzija in zamenjava ukazov (izvedena z leve proti desni), deljenje besed in širjenje poti.

Na sistemih, ki ga lahko podpirajo, je na voljo dodatna širitev: zamenjava postopka .

Razširitev zgoščenk, delitev besed in razširitev poti lahko spremenita število besed razširitve; druge širitve razširjajo eno besedo na eno besedo. Edina izjema od tega so razširitve "$@"in"${ ime @}'.

Razširitev Brace

Razširitev Brace je mehanizem, s katerim se lahko generirajo poljubni nizi. Ta mehanizem je podoben razširitev poti , vendar generirana imena datotek ne obstajajo. Vzorci, ki jih je treba razširiti, imajo neobvezno obliko preambula , ki ji sledi vrsta zaporedij, ločenih z vejico, med parom opornikov, ki ji sledi neobvezno postscript . Preambula je prednastavljena za vsak niz, ki je vsebovan v oklepajih, nato pa se postscript dodaja vsakemu nastalemu nizu, ki se razširi levo v desno.

Razširitve Brace se lahko ugnezdijo. Rezultati vsakega razširjenega niza niso razvrščeni; ohranjen je vrstni red od leve proti desni. Na primer, a{d, c, b}e se razširi v "ade ace abe."

Razširitev Brace se izvede pred vsemi drugimi razširitvami, v rezultatih pa ostanejo vsi znaki, ki so posebni drugim razširitvam. To je strogo besedilna.Bash ne uporablja sintaktične interpretacije konteksta razširitve ali besedila med zavitki.

Pravilno oblikovana razširitev nosilca mora vsebovati odprtokodne in zapiralne zaprte zapore, ki ne podpirajo, in vsaj eno zaporedje, ki ni uvrščeno na seznam. Vsako nepravilno oblikovanje razširitve vezij ostane nespremenjeno. A{ ali, se lahko navedejo s poševnico, da se prepreči, da bi se to štelo kot del izraza. Da bi se izognili konfliktom z razširitvijo parametrov, niz${ se ne šteje za upravičeno do razširitve vezice.

Ta konstrukt se ponavadi uporablja kot skrajšana, ko je skupna predponica niza, ki se generira, daljša kot v zgornjem primeru:

mkdir / usr / local / src / bash / {staro, novo, dist, bugovi}

ali

chown root /usr/{ucb/{ex,edit},lib/{ex?.**howhow_ex

Razširitev Brace uvaja rahlo nezdružljivost s preteklimi različicamish, ki ne obravnava odprtin ali zapiral, posebej, ko se pojavijo kot del besede in jih ohranja v izhodu.Bash odstranjuje zavore iz besed kot posledico razširitve vezic. Na primer, vnesena beseda vsh kot datoteka {1,2} v izhodu se identično pojavi. Enaka beseda je izpisana kot file1 file2 po širjenju zbash. Če je stroga združljivost zsh je zaželeno, začnitebash z+ Bmožnost ali onemogočite razširitev vezja z+ B možnost donastavite ukaz.

Razširitev Tilde

Če se začne beseda z znakom tilde, ki ne kotira,~'), se vse znake, ki so pred prvo črko poševnice (ali vsi znaki, če ni črke, ki je nezakonita), štejejo za tilde-predpono . Če ne navedemo nobenega od znakov v predponici tilde, se znaki v tilde-predponki, ki sledijo tildi, obravnavajo kot možni ime za prijavo . Če je to ime za prijavo null niz, se tilda nadomesti z vrednostjo parametra lupineHOME. ČeHOME je neuspel, domači imenik uporabnika, ki izvaja lupino, namesto tega nadomesti. V nasprotnem primeru se tilde-predpono nadomesti z domačim imenikom, ki je povezano z navedenim prijavnim imenom.

Če je predponica tilde "~ +", je vrednost spremenljivke lupinePWD nadomesti tildo-predpono. Če je predponica tilde "~ -", je vrednost spremenljivke lupineOLDPWD, če je nastavljen, je zamenjan. Če so znaki, ki sledijo tilde v predponki tilde, sestavljeni iz številke N , ki je neobvezno predfiksirana z '+' ali '-', se tilde-predpono nadomesti z ustreznim elementom iz svežnja imenika, ker bi ga prikazaldirs zgrajen z argumentom tilde-prefix. Če so znaki, ki sledijo tilde v predponki tilde, sestavljeni iz številke brez vodilnih "+" ali "-", je "+" predpostavljena.

Če je ime za prijavo neveljavno ali razširitev tilde ni uspešna, je beseda nespremenjena.

Vsaka določitev spremenljivke se preveri za tikte, ki ne kotirajo, takoj po a: ali=. V teh primerih se izvaja tudi razširitev tilde. Posledično lahko uporabite imena datotek s tildami v dodelitvah vPATH, MAILPATH, inCDPATH, in lupina dodeli razširjeno vrednost.

Razširitev parametrov

The $ znak uvaja razširitev parametrov, zamenjavo ukazov ali aritmetično širitev. Ime parametra ali simbol, ki ga je treba razširiti, se lahko priloži v zavihkih, ki so neobvezni, vendar služijo za zaščito spremenljivke, ki jo je treba razširiti, iz znakov, ki sledijo temu, kar se lahko razlaga kot del imena.

Ko se uporabijo oporniki, je prvo ujemanje konec } ni ušel z poševnico ali znotraj navedenega niza in ne znotraj vgrajene aritmetične razširitve, zamenjave ukazov ali razširitve parametrov.

$ {parameter} : Vrednost parameter je substituiran. Oklepaji so potrebni, ko parameter je pozicijski parameter z več kot eno številko ali kdaj parameter sledi znak, ki ga ni treba razlagati kot del njenega imena.

Če je prvi znak parameter je klicaj, uvedena je raven spremenljivke.Bash uporablja vrednost spremenljivke, oblikovane od preostalega parameter kot ime spremenljivke; ta spremenljivka se nato razširi in ta vrednost se uporabi v preostanku zamenjave, namesto vrednosti parameter sama. To je znano kot posredno širjenje . Izjema od tega je razširitev $ {! predpono *}, opisano spodaj.

V vsakem od spodnjih primerov, beseda je predmet razširitve tilde, razširitve parametrov, zamenjave ukazov in aritmetične ekspanzije. Če ne izvajate razširitve podstavka, bash preskusi za parameter, ki je nespremenjen ali neveljaven; izpuščanje debelega črevesa povzroči preizkus samo za parameter, ki ni nastavljen.

  • $ {parameter: -word} : Uporabite privzete vrednosti. Če parameter je neveljaven ali neveljav