Ieskats Linux "mainīgajos" čaulas skriptu valodā - 9. daļa


Mēs jau esam uzrakstījuši virkni rakstu par Linux Shell Scripting, kas tajā laikā bija ļoti laipni gaidīti un pat tagad bija ļoti aktuāli. Šeit ir saite uz rakstu krājumu par čaulas skriptiem.

  1. Uzziniet Linux čaulas skriptu

Šajā rakstā mēs redzēsim mainīgos, tā izpildi un ieviešanu čaulas skriptā.

Komandas izvadi var novirzīt uz standarta izvadi vai failu, un to var saglabāt arī mainīgajā. Ja komandas izvads ir pietiekami liels, lai tas nebūtu piemērots ekrānam, mums paliek tikai iespēja saglabāt izvadi failā mainīgajā. Viena priekšrocība ietaupīt izejas datus uz mainīgo ir ātrāks pārbaudes ātrums. Mainīgie tiek saglabāti atmiņā, un tāpēc tā mēdz būt ātra, salīdzinot ar izgūšanu no faila.

Mainīgie ir svarīgs komponents, ko izmanto Shell skriptu veidošanā, un tos deklarē, izmantojot bash komandu “Declare”. Lai paziņotu, ka mainīgais saka ‘līmenis’, mums jāizpilda zemāk redzamā komanda.

$ declare LEVEL

Piezīme: Korn čaulas savietojamībai mums jāizmanto iebūvētais paziņojums “typecast”. “Deklarēt” ir daudz uzlabots un satur visas funkcijas, tāpēc ieteicams lietot BASH.

  1. Mainīgā nosaukumam jāpamato mainīgā izmantošana skriptā.
  2. Visā programmā ir ļoti ieteicams izmantot vienu un to pašu mainīgā nosaukumu.
  3. Mainīgo lielums var būt gan lielais, gan mazais, taču pēc vienošanās čaulas komandas ir ar mazajiem burtiem, tāpēc mainīgo lieluma nosaukums ir jāizmanto lielajiem burtiem, lai novērstu neskaidrības. piem., TOTAL_BILLED_AMOUNT, PĀRDOŠANAS PĀRSKATS, ORDER_RECEIPT utt.

Mainīgajam var piešķirt vērtību, izmantojot vienādības zīmi (=). Lai mainīgajam piešķirtu tukšu virkni, pēc vienādības zīmes nedrīkst norādīt nevienu vērtību.

$ LEVEL =

Pārbaudiet mainīgajā “LEVEL” saglabāto vērtību kā.

$ printf "%i" $LEVEL

printf, komanda, par kuru zina lielākā daļa ‘C’ programmētāju, izdrukā datus. % i - apzīmē veselu skaitli. Mēs varam to aizstāt ar% c rakstzīmei vai% c virknei, kad un kad nepieciešams.

$LEVEL: ņemiet vērā “$”, kas darbojas kā mainīgā “LEVEL” vērtības aizstājējs.

$ printf "%i" $LEVEL
0

Piešķiriet mainīgajam vērtību.

$ LEVEL=0

Pārbaudiet mainīgajā saglabātos datus.

$ printf "%i" $LEVEL
0

PIEZĪME: Ir interesanti atzīmēt, ka abos gadījumos, kad mēs nepiešķīrām vērtību mainīgajam un kad mēs piešķirām vērtību “0” mainīgajam “LEVEL” izvadiem 0. Lai gan izeja abos gadījumos ir vienāda bet apvalka skripts atšķirīgi apstrādā gan mainīgā deklarāciju.

Piešķiriet mainīgajam jaunu vērtību.

$ LEVEL=121

Pārbaudiet mainīgajā saglabātos datus.

$ printf "%i" $LEVEL
121

Deklarēt ir BASH komanda, un tā mainīgo izveido tikai izpildot. Šādi izveidots mainīgais paliek atmiņā, līdz skripts apstājas vai mainīgais tiek iznīcināts.

$ unset LEVEL

BASH ir iepriekš definēti vairāk nekā 50 mainīgie. Dažiem no šiem mainīgajiem BASH ir pievienota īpaša nozīme, piemēram, mainīgais RANDOM izsniedz nejaušu skaitli. Ja tā nav iestatīta un pēc tam atkal definēta, sākotnējā mainīgā vērtība tiek zaudēta uz visiem laikiem. Tāpēc ieteicams neizmantot sistēmas definētu mainīgo.

Šeit ir saraksts ar dažiem noderīgiem BASH mainīgajiem.

  1. BASH - pilns Bash ceļa nosaukums.
  2. BASH_ENV - čaulas skriptā profila faila nosaukums, kas izpildīts pirms skripta palaišanas.
  3. BASH_VERSION - Bash versija (piemēram, izlaidums 2.04.0 (1)).
  4. SLEJAS - rakstzīmju skaits katrā displeja rindā (piemēram, 80).
  5. HOSTNAME - datora nosaukums. Dažās Linux versijās tas var būt mašīnas nosaukums. Citiem tas var būt pilnībā kvalificēts domēna vārds.
  6. HOSTTYPE - datora tips.
  7. HOME - jūsu mājas direktorija nosaukums.
  8. OSTYPE - operētājsistēmas nosaukums.
  9. PATH - ar kolu atdalīts meklēšanas ceļu saraksts, lai atrastu izpildāmo komandu.
  10. PPID - čaulas galvenā procesa procesa ID.
  11. PROMPT_COMMAND - komanda, kas jāizpilda pirms PS1 primārās uzvednes virknes iestatīšanas.
  12. PWD - pašreizējais darba direktorijs (ko nosaka komanda cd).
  13. RANDOM - atgriež nejaušu skaitli no 0 līdz 32767 katru reizi, kad uz to atsaucas.
  14. čaumala - vēlamais izmantotais apvalks; programmām, kas jums sāk čaulu.
  15. TERM: termināļa emulācijas veids (piemēram, konsole).

Vārdu sadalīšanas noteikums.

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

AND

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

Abos gadījumos produkcija paliek nemainīga. Tātad, kāda ir rezultāta atšķirība, izmantojot citātu?

Ļauj pārbaudīt to pašu ar dažādiem mainīgajiem datiem.

$ 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

Nemaz nerunājot par to, ka produkcija nav pareiza. BASH aizpilda atstarpi aiz “0” un tādējādi mainīgā vērtība tiek iestatīta kā “0”. Tagad mēs cenšamies izmantot citātu mainīgajiem, kā norādīts zemāk.

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

Tomēr rezultāts nav pareizs. BASH paņēma mainīgās vērtības un noņēma visas atstarpes starp tām. Tādējādi printf 0,1,2,3,4,5 nav interpretējis kā atšķirīgas vērtības. Tātad, kāds ir risinājums?

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

Jā! Risinājums ir mainīgā aizstājēja ievietošana pēdiņās. Citāti grupē burtus čaulā un jēgpilni interpretē īpašās rakstzīmes.

Citātus var izmantot “back-to-back”, un laba ideja ir pievienot mainīgas aizvietošanas ar pēdiņām. Turklāt to var izmantot, lai nodalītu tekstu no pēdiņām. Šeit ir piemērs.

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

Citāta teksta gabalu atdalīšana ar atstarpi radīs to pašu problēmu, kas tika apspriesta iepriekš. Bašs izturēsies pret atstarpi kā izbeigšanu. Vēl viens mainīgas aizstāšanas veids ir.

$ LEVEL=5

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

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

Atsevišķas pēdiņas ierobežo BASH īpašo rakstzīmju drukāšanu.

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

Slīpsvītra darbojas kā viena rakstura pēdiņa. Vai esat domājis, kā jūs drukāsiet (“)?

$ printf "%c" "\""

Kad% q sagrupēts ar printf, pēc katra vārda tiek parādīta slīpsvītra, lai nodrošinātu vārdu atstarpi.

$ LEVEL=5

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

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

Tas pagaidām ir viss. Mēs vienmēr cenšamies saviem lasītājiem ik pa brīdim sniegt viņiem noderīgus rakstus. Iepriekš aprakstītais raksts ir plašs, tāpēc pārējās tēmas ar piemēriem tiks sagatavoti nākamajā rakstā, kurā būs iekļauti ‘Mainīgā atribūti’, ‘Mainīgā eksportēšana’ utt.

Līdz tam sekojiet līdzi informācijai un sazinieties ar linux-console.net. Neaizmirstiet sniegt mums vērtīgas atsauksmes komentāru sadaļā zemāk.