“Shell Scripting Language” -da Linux “üýtgeýjiler” barada düşünje - 9-njy bölüm


Linux Shell Scripting hakda eýýäm birnäçe makala ýazdyk, şol döwürde mähirli garşylandy we häzirem gaty möhümdi. Ine, gabyk skriptleri baradaky makalalar ýygyndysyna baglanyşyk.

  1. Linux gabyk skriptini öwreniň

Bu ýerde bu makalada üýtgeýänleri, ýerine ýetirilişini we gabyk skriptinde ýerine ýetirilişini göreris.

Buýrugyň çykyşy adaty çykyşa ýa-da faýla gönükdirilip bilner we üýtgeýjide hem saklanyp bilner. Buýrugyň çykyşy ekrana laýyk gelmeýän derejede uly bolsa, diňe bir faýlda çykyşy üýtgeýjä ýazdyrmak mümkinçiligi galar. Çykyşlary üýtgeýänlere tygşytlamagyň bir artykmaçlygy, has çalt synag tizligidir. Üýtgeýjiler ýatda saklanýar we şonuň üçin faýldan gözlemek bilen deňeşdirilende çalt bolýar.

Üýtgeýjiler “Shell” skriptinde ulanylýan möhüm komponent bolup, bash buýrugy\Deklare ulanyp yglan edilýär. Üýtgeýjini dereje diýmek üçin aşakdaky buýrugy ýerine ýetirmeli.

$ declare LEVEL

Bellik: Düwürtik gabygynyň gabat gelmegi üçin berlen\tipcast ulanmalydyrys. Deklarasiýa has ösen we ähli aýratynlyklary öz içine alýar, şonuň üçin BASH ulanylanda maslahat berilýär.

  1. Üýtgeýjiniň ady, üýtgeýjiniň skriptde ulanylmagyny delillendirmeli.
  2. Programmanyň dowamynda şol bir üýtgeýän ady ulanmak maslahat berilýär.
  3. Üýtgeýjileriň ady kiçi we kiçi harplar bilen bolup biler, ýöne konwensiýa gabyk buýruklary kiçi harplar bilen bolýar we şonuň üçin bulaşyklygy aýyrmak üçin üýtgeýänleriň adyny baş harp bilen ulanmalydyrys. meselem, TOTAL_BILLED_AMOUNT, SELL_REPORT, ORDER_RECEIPT we ş.m.

Üýtgeýjä deň belgi (=) ulanyp baha belläp bolýar. Üýtgeýjä boş setir bellemek üçin deň belgiden soň hiç hili baha bermeli däldiris.

$ LEVEL =

Üýtgeýän “LEVEL” -de saklanýan bahany barlaň.

$ printf "%i" $LEVEL

printf, “C” programmistleriň köpüsiniň habary, maglumatlary çap edýär. % i - Integer-i aňladýar. Nyşan üçin% c ýa-da sim üçin% c bilen çalşyp bileris.

$LEVEL: Üýtgeýjiniň LEVEL -iň ornuny tutýan $-a üns beriň.

$ printf "%i" $LEVEL
0

Üýtgeýjä baha belläň.

$ LEVEL=0

Saklanan maglumatlary üýtgeýjide barlaň.

$ printf "%i" $LEVEL
0

ÜNS BERI both: Iki ýagdaýda-da üýtgeýjä baha bellemedik wagtymyz we üýtgeýän LEVEL netijelerine 0 bahasyny bellänimizde, çykyşyň iki ýagdaýda-da deňdigini bellemek gyzykly. emma gabyk skripti üýtgeýän beýannamanyň ikisini-de başgaça işleýär.

Üýtgeýjä täze baha belläň.

$ LEVEL=121

Saklanan maglumatlary üýtgeýjide barlaň.

$ printf "%i" $LEVEL
121

Deklarasiýa BASH buýrugy we diňe ýerine ýetirilende üýtgeýjini döredýär. Döredilen üýtgeýji, skript saklanýança ýa-da üýtgeýji ýok bolýança ýatda galýar.

$ unset LEVEL

BASH-da öňünden kesgitlenen 50-den gowrak üýtgeýji bar. Bu üýtgeýjileriň käbiri BASH bilen baglanyşykly aýratyn many berýär, üýtgeýän RANDOM tötänleýin san çykarýar. Düzedilmedik bolsa we täzeden kesgitlenen bolsa, asyl üýtgeýän baha hemişelik ýitýär. Şonuň üçin haýsydyr bir kesgitlenen üýtgeýjini ulanmazlyk maslahat berilýär.

Ine käbir peýdaly BASH üýtgeýjileriň sanawy.

  1. BASH - Başyň doly ady.
  2. BASH_ENV - Gabyk skriptinde, skript başlamazdan ozal ýerine ýetirilen profil faýlyň ady.
  3. BASH_VERSION - Başyň wersiýasy (mysal üçin, 2.04.0 (1) - goýbermek).
  4. SÖUMGÜLER - Ekranyňyzdaky setirdäki nyşanlaryň sany (mysal üçin, 80).
  5. HOSTNAME - Kompýuteriň ady. Linux-yň käbir wersiýalarynda bu enjamyň ady bolup biler. Beýlekilerde bolsa, doly hünärli domen ady bolup biler.
  6. HOSTTYPE - Kompýuteriň görnüşi.
  7. HOM - Öý katalogyňyzyň ady.
  8. OSTYPE - Operasiýa ulgamynyň ady.
  9. PATH - ýerine ýetirmek üçin buýruk tapmak üçin kolon bilen bölünen gözleg ýollarynyň sanawy.
  10. PPID - gabygyň ene-atasynyň prosesi ID.
  11. PROMPT_COMMAND - PS1 başlangyç haýyş setirini düzmezden ozal ýerine ýetirmegi buýruň.
  12. PWD - Häzirki işleýän katalog (cd buýrugy bilen kesgitlenýär).
  13. RANDOM - her gezek salgylanylanda 0 bilen 32767 aralygyndaky tötänleýin belgini görkezýär.
  14. SHELL - ulanmak üçin ileri tutulýan gabyk; siziň üçin gabygy başlaýan programmalar üçin.
  15. ŞERT - Terminal emulýasiýa görnüşi (mysal üçin, konsol).

Söz bölmegiň düzgüni.

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

AND

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

Iki ýagdaýda-da çykyş öňküligine galýar. Sitata ulanylanda netijäniň tapawudy näme?

Dürli üýtgeýän maglumatlar bilen birmeňzeş barlalyň.

$ 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

Toeri gelende aýtsak, çykyş dogry däl. BASH “0” -dan soň boşluk alýar we üýtgeýjiniň bahasy “0” hökmünde kesgitlenýär. Indi üýtgeýjiler üçin sitatany aşakdaky ýaly ulanmaga synanyşýarys.

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

Emma netije dogry däl. BASH üýtgeýän bahalary aldy we olaryň arasyndaky boşluklary aýyrdy. Şonuň üçin printf 0,1,2,3,4,5 aýratyn baha hökmünde düşündirmedi. Onda çözgüt näme?

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

Hawa! Üýtgeýjiniň çalyşmasyny sitata goýmak, çözgüt. Sitirler gabykdaky nyşanlary toparlaýar we aýratyn nyşanlary manyly düşündirýär.

Sitirler yzly-yzyna ulanylyp bilner we üýtgeýän çalyşmalary sitata bilen goşmak gowy pikir. Mundan başga-da, umumy teksti sitatalardan aýyrmak üçin ulanylyp bilner. Ine bir mysal.

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

Sitirlenen tekstiň böleklerini boşluk bilen bölmek, ýokarda aýdylyşy ýaly problema döreder. Baş ak ýeriň soňuna çykar. Üýtgeýän çalyşmagyň başga bir usuly.

$ LEVEL=5

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

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

Queke sitatalar BASH-yň ýörite nyşanlary çap etmegini çäklendirýär.

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

“Backslash” bir nyşan üçin ýekeje sitata ýaly işleýär. Nädip çap etjekdigiňizi pikir edip gördüňizmi (\ )?

$ printf "%c" "\""

Haçan-da% q printf bilen toparlananda, söz aralygyny üpjün etmek üçin her sözden soň yzyna gaýtarylýar.

$ LEVEL=5

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

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

Bularyň hemmesi häzirlikçe. Elmydama okyjylarymyza özleri üçin peýdaly makalalar bilen üpjün etmäge synanyşýarys. Aboveokardaky makala gaty giň, şonuň üçin mysallar bilen galan mowzuklar indiki makalada Üýtgeýjiniň sypatlary, Üýtgeýän eksport we ş.m. öz içine alar.

Şoňa çenli habarlaşyň we linux-console.net-a birikdiriň. Aşakdaky teswirler bölüminde bize gymmatly pikirleriňizi bermegi ýatdan çykarmaň.