Nested Variable Substitution og Forskilgreindar BASH breytur í Linux - Part 11


Síðustu tvær greinar um BASH Shell, þar sem við ræddum breytur ítarlega, voru mjög vel þegnar meðal lesenda okkar. Við sem Tecmint-teymi erum mjög áhugasöm um að veita þér nýjustu, uppfærðu og viðeigandi efni sem fjallað er um í smáatriðum. Þar að auki reynum við alltaf að snerta helstu sjónarhorn á samsvarandi efni.

Hér er síðasta greinin um Linux breytur þar sem við ætlum að sjá breytuskipti og breytur skilgreindar í Shell áður en við lokum þessu efni.

Bash framkvæmir breytuskipti áður en skipunin er raunverulega framkvæmd. Linux Bash Shell leitar að öllu „$“ merkinu áður en skipunin er keyrð og kemur í staðinn fyrir gildið breytu. Ferlið við Bash Variable skipti er aðeins framkvæmt einu sinni. Hvað ef við erum með hreiðrar breytur?

Athugið: Með hreiðri breytu er átt við breytu sem lýst er inn í breytu. Við skulum sjá ofangreinda atburðarás í dæminu hér að neðan.

Lýstu yfir breytu sem er Read-One og Executable eins og hér að neðan.

[email :~$ declare -rx Linux_best_website="linux-console.net"

Athugaðu gildi breytunnar sem geymd er.

[email :~$ printf "%s" "$Linux_best_website" 

linux-console.net

Lýstu nú yfir aðra breytu sem aftur er Read-Only og Executable.

[email :~$ declare -rx Linux_website="Linux_best_website"

Nú er staðan sú að við höfum skilgreint tvær breytur.

'Linux_best_website', en verðmæti hennar er „linux-console.net“
og, 'Linux_vefsíða', en verðmæti þeirra er Linux_besta_vefurinn

Hver yrði niðurstaðan ef við keyrum fyrir neðan einnar línu skipunina?

[email :~$ printf "%s" "$Linux_website"

Það ætti fyrst að skipta út breytunni '$Linux_website', með gildinu \Linux_best_website og síðan \$Linux_best_website er aftur breytan gildi sem er \linux-console.net. Svo lokaúttakið við að keyra skipunina hér að neðan ætti að vera.

[email :~$ printf "%s" "$Linux_website" 

linux-console.net

En því miður er þetta ekki staðan, framleiðslan sem við erum að fá er Linux_best_website.

Ástæða? Já! Bash skipta aðeins einu sinni út fyrir gildi breytu. Hvað með flókin forskrift og forrit þar sem við þurfum að skipta út breytum oft og þarf að skipta út breytunni oftar en einu sinni?

Hér kemur skipunin 'eval' sem framkvæmir viðbótarvinnu við breytuskipti oftar en einu sinni í handriti. Hér er dæmi til að gera heildina eins glæra og gler.

Tilgreindu breytu x, gildi hennar er 10.

[email :~/Desktop$ declare x=10

Athugaðu gildi breytunnar x, við skilgreindum bara.

[email :~/Desktop$ echo $yx

x10

Tilgreindu breytu y, gildi hennar er x.

[email :~/Desktop$ declare y=x

Athugaðu gildi breytunnar y, við skilgreindum bara.

[email :~/Desktop$ echo $y 

x

Hér er vandamálið við BASH skipti á breytu einu sinni, sem framkvæmir ekki auka lotu af breytuskiptingu. Við erum að nota 'eval' skipunina til að laga þetta.

[email :~/Desktop$ eval y=$x

Athugaðu nú gildi breytunnar 'y'.

[email :~/Desktop$ echo $y 

10

Húrra! Málið var lagað og „eval“ skipun vann keppnina :)

Svo ekki sé minnst á, 'eval' skipunin er mjög hjálpleg í stórum forskriftarforritum og er mjög handhægt tæki.

Síðasti en ekki minnsti hluti þessarar færslu er BASH fyrirfram skilgreindar breytur. Nei! Ekki verða læti við að sjá þennan lista. Þú þarft aldrei að muna allan listann áður en þú byrjar að skrifa handrit nema nokkur. Sem hluti af námsferlinu erum við að kynna BASH fyrirfram skilgreinda breytulistann.

Það er risastór listi yfir fyrirfram skilgreinda BASH breytu. Við höfum reynt að búa til lista yfir þær sem oftast eru notaðar.

Það er allt í bili. Ég kem hér aftur með aðra áhugaverða grein. Fylgstu með og tengdu við TecMint þangað til. Ekki gleyma að veita okkur verðmæta endurgjöf þína í athugasemdahlutanum hér að neðan.