Linux mainīgo izpratne un rakstīšana čaulas skriptos - 10. daļa


Linux čaulas skriptu valoda vienmēr ir bijusi aktuāla tēma un tā būs arī turpmāk. Shell skriptu valoda ir maģiska, un to ir tik viegli izdarīt programmu skriptu valodā kā jebkurā citā valodā. Tomēr tam ir nepieciešamas padziļinātas zināšanas par to, ko mēs darām un kāds ir gaidāmais rezultāts.

Visi čaulas skriptu raksti, kurus esam uzrakstījuši saviem lasītājiem, ir augsti novērtēti, ieskaitot pēdējo “Ieskats Linux mainīgajos”. Mēs paplašinām pēdējo rakstu uz jaunu līmeni.

Mainīgie atribūti

Katram mainīgajam Linux vidē ir noteiktas iespējas, un tās sauc par “atribūtiem”. Šīs opcijas vai atribūtus var ieslēgt Ieslēgt un Izslēgt , ja tas nepieciešams situācijā, izmantojot komandu “deklarēt”.

Mainīgā atribūta piemērā tiek izmantots slēdzis “ -i ”, kas ieslēdz attiecīgā mainīgā atribūtu vesels skaitlis. Pat ja skaitļa vērtība tiek nodota, lai pārslēgtos uz ‘ -i ’, tas neizmetīs kļūdas ziņojumu un neizraidīs ‘ 0 ’ kā vesela skaitļa interpretāciju. Šeit tas kļūst skaidrāks no zemāk redzamā piemēra.

Paziņot mainīgo Integer, rēķins = 121

[email :~$ declare -i bill=121

Printf mainīgā rēķina vērtība.

[email :~$ printf "%d\n" "$bill" 

121

Lai mainīgā vērtība būtu virkne. Mainīgais rēķins jau ir deklarēts, nav nepieciešams to deklarēt otro reizi. Vienkārši mainiet mainīgā vērtību kā.

[email :~$ bill=tecmint

Tagad atkal izdrukājiet mainīgā rēķina vērtību.

[email :~$ printf "%d\n" "$bill" 

0

Kļūdas ziņojuma vietā pamaniet ‘ 0 ’.

[email :~$ declare -p bill 

declare -i bill="121"

Šeit glābšanai nāk -p (apzīmē druku) slēdzis.

Lai izslēgtu izslēgtu mainīgā lieluma atribūtus, mums visiem ir jāievieto + ( plus ) zīme tieši pirms slēdža. Šeit tas ir skaidrāk parādīts zemāk esošajā piemērā.

Izslēdziet izslēgts augstāk minētā mainīgā atribūtu integer.

[email :~$ declare +i bill

Pārbaudiet mainīgā vērtību.

[email :~$ printf "%d\n" "$bill" 

bash: printf: bill: invalid number
0

Tagad izdrukājiet mainīgā vērtību, izmantojot slēdža virkni.

[email :~$ printf "%s\n" "$bill" 

tecmint

Šeit iepriekš minētajā piemērā bash nevarēja novērtēt skaitlisko vērtību kā kļūdu, tomēr printf interpretē to, kas varētu būt skaitlis un kas nevar būt.

Tikai lasāmi mainīgie

Iespējams, esat dzirdējis tikai lasāmo atmiņu ( ROM ), bet kas ir mainīgais, kas paredzēts tikai lasīšanai? Vai tam ir kāda līdzība ar ROM?

Labi lasāmi mainīgie, piemēram, tikai lasāma atmiņa, ir vērtība, kuras vērtību pēc tās piešķiršanas nevar mainīt. Tāpēc to sauc par tikai lasāmu. Jūs nevarat rakstīt, rediģēt vai modificēt jaunu mainīgā vērtību. Šeit ir ilustrācija, izmantojot piemēru.

Atzīmējiet tikai lasāmu ( -r ) mainīgā nosaukumu, kura vērtība ir “linux-console.net”.

[email :~$ declare -r name="linux-console.net"

Drukājiet virs deklarētā mainīgā lieluma vērtību.

[email :~$ printf "%s\n" "$name" 

linux-console.net

Mēģiniet mainīt mainīgā vērtību.

[email :~$ declare -r name="Avishek" 

bash: declare: name: readonly variable

Kā minēts iepriekš, lasāmā mainīgā atribūtus var mainīt, izmantojot zīmi ‘ + ’.

Mainīgo eksportēšana Linux

Visi čaulas mainīgie, kas deklarēti čaulas skriptā, ir pieejami, līdz skripts darbojas. Ārpus skripta mainīgais no skripta neeksistē. Mainīgo mainīgo pieejamības ārpus skripta procesu sauc par mainīgo eksportēšanu.

Mainīgo var eksportēt ārpus čaulas, izmantojot slēdzi deklarēt -x (eksportēt), kas čaulai atzīst to, ko vēlaties eksportēt. Deklarēt eksporta slēdzi var izmantot kā.

[email :~$ declare -x variable=”Constant_Value”

Visas izmaiņas, kas veiktas mainīgajam, kamēr darbojas skripts, tiek zaudētas, kad mainīgais tiek eksportēts ārpus skripta. Shell skriptos mainīgā lieluma eksportēšana ir ļoti svarīga.

Mēs vēlamies, lai mainīgais būtu tikai lasāms un pieejams ārpus skripta, mums vienlaikus jāizmanto slēdzis -r un slēdzis -x .

[email :~$ declare -rx variable=”Constant_Value”

Vides mainīgie

Mainīgie, kas tiek koplietoti starp programmu un programmu, kas tos izpilda. Vides mainīgos var eksportēt, bet atribūtus tam nevar piešķirt.

Izprotot iepriekšminēto teoriju praktiski. Šeit mums ir divi skripti 0.sh un 1.sh .

# 0.sh
#!/bin/bash 
declare -rx name=Tecmint 
bash 0.sh 
exit 0

Un otrais scenārijs ir.

# 1.sh
#!/bin/bash 
printf "%s\n" "$name" 
name=linux-console.net 
printf "%s\n" "$name"
exit 0

Šeit notiekošais ir mainīgais (nosaukums) tiek deklarēts kā tikai lasāms un eksportēts un tūlīt pēc šī otrā skripta izsaukšanas.

Otrais skripts tikko izdrukāja mainīgo no pirmā skripta, kas tika eksportēts pirmajā printf priekšrakstā. Otrajā printf priekšrakstā tas parāda mainīgajam ‘ name ’ piešķirto jauno vērtību.

Nav jāuztraucas, ka mainīgais ir tikai lasāms, kā to var piešķirt no jauna. Vai jūs neatceraties, ka “visas mainīgajam veiktās izmaiņas, kamēr skripts darbojas, tiek zaudētas, kad mainīgais tiek eksportēts ārpus skripta.”

Komanda deklarēt atļauj visus tālāk minētos slēdžus kopā ar to kombināciju.

  1. -a : deklarē masīvu.
  2. -f : displeja funkcija un definīcija.
  3. -F : parādīt funkcijas nosaukumu.
  4. -r : paziņojiet mainīgo kā tikai lasāmu.
  5. -x : paziņot, ka mainīgais ir eksportējams.
  6. -I : paziņojiet mainīgo kā veselu skaitli.

Tas pagaidām ir viss. Jau nākamajā rakstā mēs apspriedīsim veidus, kā aizstāt mainīgos, izmantojot komandu ‘ eval ’, un mainīgos, kas jau ir definēti bash, pirms aizverat šo tēmu. Ceru, ka jūs, cilvēki, baudāt savu ceļu uz padziļinātu skriptu izveidi. Līdz tam sekojiet līdzi jaunumiem un sazinieties ar linux-console.net.