Vpogled v "spremenljivke" Linuxa v skriptnem jeziku Shell - 9. del


O Linux Shell Scripting smo že napisali vrsto člankov, ki so bili takrat toplo sprejeti in zelo pomembni tudi zdaj. Tu je povezava do zbirke člankov o skriptiranju lupine.

  1. Naučite se skriptanja lupine Linuxa

Tu v tem članku bomo videli spremenljivke, njihovo izvajanje in njegovo izvajanje v skriptu lupine.

Izhod ukaza lahko preusmerite na standardni izhod ali datoteko in ga lahko shranite tudi v spremenljivko. Če je izhod ukaza dovolj velik, da ne ustreza zaslonu, nam ostane samo možnost, da izhod shranimo v datoteko v spremenljivko. Ena od prednosti prihranka izhoda na spremenljivki je hitrejša hitrost pregleda. Spremenljivke se shranijo v pomnilnik, zato je ponavadi hitra v primerjavi z iskanjem iz datoteke.

Spremenljivke so pomembna komponenta, ki se uporablja pri skriptiranju lupine in so razglašene z ukazom bash\"Declare". Če želimo spremenljivko razglasiti kot "nivo", moramo izvesti spodnji ukaz.

$ declare LEVEL

Opomba: Za združljivost lupine korn moramo uporabiti\"typecast", vgrajen stavek. Izjava je naprednejša in vsebuje vse funkcije, zato je priporočljiva pri uporabi BASH.

  1. Ime spremenljivke mora upravičevati uporabo spremenljivke v skriptu.
  2. Priporočamo uporabo istega imena spremenljivke v celotnem programu.
  3. Ime spremenljivk je lahko tako veliko kot tudi malo, vendar so po dogovoru ukazi lupine v malih črkah, zato bi morali spremenljivke uporabljati z velikimi črkami, da odstranimo kakršno koli zmedo. npr. TOTAL_BILLED_AMOUNT, SELL_REPORT, ORDER_RECEIPT itd.

Vrednost spremenljivki lahko dodelimo z enačbo (=). Če želite spremenljivki dodeliti prazen niz, ne smemo podati nobene vrednosti po enačbi.

$ LEVEL =

Preverite vrednost, shranjeno v spremenljivki 'LEVEL', kot.

$ printf "%i" $LEVEL

printf, ukaz, ki ga pozna večina programerjev 'C', natisne podatke. % i - predstavlja celo število. Po potrebi ga lahko nadomestimo z% c za znak ali% c za niz.

$LEVEL: upoštevajte '$', ki deluje kot nadomestek vrednosti za spremenljivko 'LEVEL'.

$ printf "%i" $LEVEL
0

Spremenljivki dodelite vrednost.

$ LEVEL=0

Preverite shranjene podatke v spremenljivki.

$ printf "%i" $LEVEL
0

OPOMBA: Zanimivo je omeniti, da v obeh primerih, ko spremenljivki nismo dodelili vrednosti in ko smo spremenljivki "LEVEL" dodelili vrednost "0", izhodi 0. Čeprav so izhodi v obeh primerih enaki vendar skripta lupine različno obravnava deklaracijo spremenljivke.

Spremenljivki dodelite novo vrednost.

$ LEVEL=121

Preverite shranjene podatke v spremenljivki.

$ printf "%i" $LEVEL
121

Declare je ukaz BASH in ustvarja spremenljivko samo, ko se izvede. Tako ustvarjena spremenljivka ostane v pomnilniku, dokler se skript ne ustavi ali spremenljivka uniči.

$ unset LEVEL

BASH ima več kot 50 vnaprej določenih spremenljivk. Nekatere od teh spremenljivk imajo poseben pomen, povezan z BASH, npr. Spremenljivka RANDOM izpiše naključno število. Če je nastavljena in nato znova definirana, se prvotna vrednost spremenljivke za vedno izgubi. Zato priporočamo, da ne uporabljate nobene sistemsko spremenljivke.

Tu je seznam nekaterih uporabnih spremenljivk BASH.

  1. BASH - celotno ime Bash-a.
  2. BASH_ENV - v skriptu lupine je ime datoteke profila, ki se je izvajala pred zagonom skripta.
  3. BASH_VERSION - različica Basha (na primer 2.04.0 (1) -release).
  4. STOLPCI - Število znakov na vrstico na zaslonu (na primer 80).
  5. HOSTNAME - ime računalnika. V nekaterih različicah Linuxa je to lahko ime stroja. V drugih je to lahko popolnoma kvalificirano ime domene.
  6. HOSTTYPE - vrsta računalnika.
  7. HOME - ime vašega domačega imenika.
  8. OSTYPE - ime operacijskega sistema.
  9. PATH - Seznam iskalnih poti, ločenih z dvopičjem, za iskanje ukaza za izvedbo.
  10. PPID - ID procesa nadrejenega procesa lupine.
  11. PROMPT_COMMAND - ukaz za izvedbo pred nastavitvijo niza primarnega poziva PS1.
  12. PWD - trenutni delovni imenik (kot ga nastavi ukaz cd).
  13. RANDOM - vrne naključno število med 0 in 32767 vsakič, ko se sklicuje nanjo.
  14. LUŠKA - najprimernejša lupina za uporabo; za programe, ki za vas začnejo lupino.
  15. TERM - Vrsta emulacije terminala (na primer konzola).

Pravilo delitve besed.

$ LEVEL=0
$ printf "%i" $LEVEL
0

AND

$ LEVEL=”0”
$ printf "%i" $LEVEL
0

V obeh primerih izhod ostane enak. Kakšna je torej razlika v rezultatu pri uporabi ponudbe?

Preverimo isto z različnimi spremenljivkami.

$ LEVEL=0 ; 1 ; 2 ; 3 ; 4 ; 5
bash: 1: command not found 
bash: 2: command not found 
bash: 3: command not found 
bash: 4: command not found 
bash: 5: command not found
$ printf "%i" $LEVEL
0

Da ne omenjam, izhod ni pravilen. BASH vzame presledek po '0' kot zaključek, zato je vrednost spremenljivke nastavljena na '0'. Zdaj skušamo uporabiti citat za spremenljivke, kot je prikazano spodaj.

$ LEVEL=”0 ; 1 ; 2 ; 3 ; 4 ; 5”
$ printf "%s" $LEVEL 
0;1;2;3;4;5

Rezultat še vedno ni pravilen. BASH je sprejel spremenljivke in odstranil vse presledke med njimi. Zato printf ni razlagal 0,1,2,3,4,5 kot ločene vrednosti. Torej, kakšna je rešitev?

printf "%s" "$LEVEL" 
0 ; 1 ; 2 ; 3 ; 4 ; 5

Ja! Rešitev je, če zamenjavo spremenljivk postavimo pod narekovaje. Navedki združujejo znake v lupini in smiselno razlagajo posebne znake.

Navedbe je mogoče uporabiti od zadaj nazaj, zato je dobro, da spremenljive zamenjave priložite narekovajem. Poleg tega se lahko uporablja za ločevanje celotnega besedila od citatov. Tu je primer.

$ LEVEL=5 
$ FLAG_MESSAGE="I HAVE CLEARED LEVEL""$LEVEL"". I Deserve appreciation." 
$ printf “%s” “$FLAG_MESSAGE”
“I HAVE CLEARED LEVEL5. I Deserve appreciation.”

Ločevanje kosov citiranega besedila s presledkom bo povzročilo enako težavo, kot je bila obravnavana zgoraj. Bash bo presledek obravnaval kot zaključek. Drug način nadomestitve spremenljivk je.

$ LEVEL=5

$ FLAG_MESSAGE="I HAVE CLEARED LEVEL ${LEVEL}. I Deserve appreciation." 

$ printf “%s” "$FLAG_MESSAGE" 
“I HAVE CLEARED LEVEL 5. I Deserve appreciation.”

Enojni narekovaji omejujejo BASH tiskanje posebnih znakov.

$ printf “%s” '$FLAG_MESSAGE'
“$FLAG_MESSAGE”

Povratna poševnica deluje kot en narekovaj za en znak. Ste pomislili, kako boste tiskali (\ ")?

$ printf "%c" "\""

Ko je% q združen s printf, za vsako besedo zagotavlja poševnico nazaj, da se zagotovi razmik med besedami.

$ LEVEL=5

$ FLAG_MESSAGE="I HAVE CLEARED LEVEL ${LEVEL}. I Deserve appreciation." 

$ printf “%q” "$FLAG_MESSAGE" 
“I\ HAVE\ CLEARED\ LEVEL\ 5.\ I\ Deserve\ appreciation.”

To je vse za zdaj. Vedno poskušamo našim bralcem posredovati članke, ki so zanje koristni. Zgoraj zajeti članek je obsežen, zato bodo ostale teme s primeri predstavljene v naslednjem članku, ki bo vseboval "Atributi spremenljivke", "Izvoz spremenljivk" itd.

Do takrat ostanite z nami in povezani s linux-console.net. Ne pozabite nam poslati svojih dragocenih povratnih informacij v spodnjem oddelku za komentarje.