„Linux“ „kintamųjų“ „Shell Scripting Language“ įžvalga – 9 dalis


Jau esame parašę straipsnių seriją apie Linux Shell Scripting, kuri tuo metu buvo šiltai sutikta ir buvo labai aktuali net ir dabar. Čia yra nuoroda į straipsnių apie apvalkalo scenarijų rinkinį.

  1. Išmok Linux Shell Scripting

Šiame straipsnyje pamatysime kintamuosius, jų vykdymą ir įgyvendinimą apvalkalo scenarijuje.

Išvesties išsaugojimas

Komandos išvestis gali būti nukreipta į standartinę išvestį arba failą, taip pat gali būti saugoma kintamajame. Jei komandos išvestis yra pakankamai didelė, kad ji netelpa į ekraną, mums paliekama tik galimybė išsaugoti išvestį faile į kintamąjį. Vienas iš kintamojo išvesties išsaugojimo pranašumų yra greitesnis tyrimo greitis. Kintamieji išsaugomi atmintyje, todėl paprastai būna greiti, palyginti su nuskaitymu iš failo.

Kintamieji scenarijų kalboje

Kintamieji yra svarbus komponentas, naudojamas „Shell“ scenarijuose ir deklaruojami naudojant bash komandą „Deklaruoti“. Norėdami paskelbti kintamąjį „level“, turime vykdyti toliau pateiktą komandą.

declare LEVEL

Pastaba: turime naudoti „typecast“ – įtaisytą teiginį, skirtą korn apvalkalui suderinti. „Deklaruoti“ yra pažangesnė ir apima visas funkcijas, todėl rekomenduojama naudoti naudojant BASH.

Taisyklės
  1. Kintamojo pavadinimas turi pagrįsti kintamojo naudojimą scenarijuje.
  2. Labai rekomenduojama naudoti tą patį kintamojo pavadinimą visoje programoje.
  3. Kintamųjų pavadinimas gali būti tiek didžiosiomis, tiek mažosiomis raidėmis, tačiau pagal susitarimą apvalkalo komandos yra mažosiomis raidėmis, todėl turėtume naudoti kintamųjų pavadinimą didžiosiomis raidėmis, kad būtų išvengta painiavos. pvz., TOTAL_BILLED_AMOUNT, SELL_REPORT, ORDER_RECEIPT ir kt.

Įgyvendinimas

Kintamajam gali būti priskirta reikšmė naudojant lygybės ženklą (=). Norėdami kintamajam priskirti tuščią eilutę, neturime pateikti jokios reikšmės po lygybės ženklo.

LEVEL =

Patikrinkite kintamajame „LEVEL“ saugomą reikšmę kaip.

printf "%i" $LEVEL

printf, komanda, kurią žino dauguma „C“ programuotojų, spausdina duomenis. %i – reiškia sveikąjį skaičių. Galime pakeisti jį %c, jei tai simbolis, arba %c, jei reikia, jei reikia.

$LEVEL: atkreipkite dėmesį į „$“, kuris veikia kaip kintamojo „LEVEL“ vertės pakaitalas.

Pavyzdžio išvestis
printf "%i" $LEVEL
0

Priskirkite kintamajam reikšmę.

LEVEL=0

Patikrinkite saugomus duomenis kintamuoju.

printf "%i" $LEVEL
0

PASTABA: įdomu pastebėti, kad ir tais atvejais, kai nepriskyrėme reikšmės kintamajam, ir kai priskyrėme reikšmę 0<“ į kintamąjį „LEVEL“ išveda 0. Nors išvestis yra ta pati abiem atvejais, tačiau apvalkalo scenarijus abu kintamųjų deklaracijas apdoroja skirtingai.

Priskirkite kintamajam naują reikšmę.

LEVEL=121

Patikrinkite saugomus duomenis kintamuoju.

printf "%i" $LEVEL
121

Atšaukti kintamąjį

Deklaruoti yra BASH komanda ir ji sukuria kintamąjį tik tada, kai yra vykdoma. Taip sukurtas kintamasis lieka atmintyje, kol scenarijus sustoja arba kintamasis sunaikinamas.

unset LEVEL

Iš anksto nustatyti kintamieji BASH

BASH turi daugiau nei 50 iš anksto nustatytų kintamųjų. Kai kurie iš šių kintamųjų turi ypatingą reikšmę, susietą su BASH, pvz., kintamasis RANDOM išveda atsitiktinį skaičių. Jei jis nenustatytas ir vėl apibrėžiamas, pradinė kintamojo reikšmė prarandama visam laikui. Todėl patariama nenaudoti jokio sistemos apibrėžto kintamojo.

Štai keletas naudingų BASH kintamųjų sąrašas.

  1. BASH – visas Bash kelio pavadinimas.
  2. BASH_ENV – apvalkalo scenarijuje profilio failo, vykdyto prieš paleidžiant scenarijų, pavadinimas.
  3. BASH_VERSION – „Bash“ versija (pavyzdžiui, 2.04.0 (1) leidimas).
  4. Stulpeliai – simbolių skaičius vienoje ekrano eilutėje (pavyzdžiui, 80).
  5. HOSTNAME – kompiuterio pavadinimas. Kai kuriose „Linux“ versijose tai gali būti įrenginio pavadinimas. Kituose atveju tai gali būti visiškai kvalifikuotas domeno vardas.
  6. HOSTTYPE – kompiuterio tipas.
  7. HOME – jūsų namų katalogo pavadinimas.
  8. OSTYPE – operacinės sistemos pavadinimas.
  9. KELIAS – dvitaškiais atskirtas paieškos kelių sąrašas, skirtas vykdyti komandai rasti.
  10. PPID – apvalkalo pirminio proceso ID.
  11. PROMPT_COMMAND – komanda, kuri vykdoma prieš nustatant PS1 pirminės eilutės eilutę.
  12. PWD – dabartinis darbo katalogas (nustatytas cd komanda).
  13. RANDOM (atsitiktinis) – kiekvieną kartą, kai jis nurodomas, pateikiamas atsitiktinis skaičius nuo 0 iki 32767.
  14. SHELL – pageidaujamas naudoti apvalkalas; programoms, kurios jums paleidžia apvalkalą.
  15. TERM – terminalo emuliacijos tipas (pavyzdžiui, konsolė).

Žodžių skaidymo taisyklė.

LEVEL=0
printf "%i" $LEVEL
0

AND

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

Abiem atvejais išvestis išlieka ta pati. Taigi, kuo skiriasi rezultatas naudojant citatą?

Leidžia patikrinti tą patį su skirtingais kintamaisiais duomenimis.

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

Jau nekalbant apie tai, kad išvestis neteisinga. BASH naudoja tarpą po „0“ kaip pabaigą, todėl kintamojo reikšmė nustatoma kaip „0“. Dabar bandome naudoti kintamųjų citatą, kaip nurodyta toliau.

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

Vis tiek rezultatas nėra teisingas. BASH paėmė kintamųjų reikšmes ir pašalino visus tarpus tarp jų. Todėl printf neinterpretavo 0,1,2,3,4,5 kaip skirtingų verčių. Taigi koks sprendimas?

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

Taip! Sprendimas yra kintamojo pakaitalų įtraukimas į kabutes. Citatos sugrupuoja simbolius apvalkale ir aiškina specialiuosius simbolius prasmingai.

Citatos gali būti naudojamos viena po kitos, o kintamųjų pakaitalus patartina pridėti su kabutėmis. Be to, jis gali būti naudojamas atskirti bendrą tekstą nuo citatų. Štai pavyzdys.

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

Cituojamo teksto dalių atskyrimas tarpais susidurs su ta pačia problema, kaip aptarta aukščiau. Bash baltą tarpą traktuos kaip pabaigą. Kitas kintamųjų pakeitimo būdas yra.

LEVEL=5

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

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

Vienos kabutės neleidžia BASH spausdinti specialiuosius simbolius.

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

Pasvirasis brūkšnys (/)

Pasvirasis brūkšnys veikia kaip viena kabutė vienam simboliui. Ar pagalvojote, kaip spausdinsite ()?

printf "%c" "\""

Kai %q sugrupuojamas su printf, po kiekvieno žodžio pateikiamas pasvirasis brūkšnys, kad būtų užtikrintas tarpas tarp žodžių.

LEVEL=5

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

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

Tai kol kas viskas. Mes visada stengiamės savo skaitytojams retkarčiais pateikti jiems naudingų straipsnių. Aukščiau pateiktas straipsnis yra platus, todėl likusios temos su pavyzdžiais bus pateiktos kitame straipsnyje, kuriame bus „Kintamojo atributai“, „Kintamojo eksportavimas“ ir kt.

Iki tol sekite naujienas ir prisijunkite prie linux-console.net. Nepamirškite pateikti mums vertingų atsiliepimų toliau pateiktame komentarų skyriuje.