Nested Variable Substitution and Predefined BASH Variables in Linux - Part 11


Déi lescht zwee Artikel iwwer BASH Shell, wou mir Variabelen am Detail diskutéiert hunn, waren héich geschätzt bei eise Lieser. Mir als Tecmint-Team si ganz gär Iech déi lescht, aktuell a relevant Themen an Detailer ofgedeckt ze ginn. Ausserdeem probéieren mir ëmmer grouss Perspektiven vun den entspriechende Themen ze beréieren.

Hei ass de leschten Artikel iwwer Linux Variablen, wou mir Variablen Ersatz a Variablen gesinn, déi an Shell definéiert sinn, ier mer dëst Thema zoumaachen.

Bash mécht variabel Ersatz ier de Kommando wierklech ausgefouert gëtt. D'Linux Bash Shell sicht no all '$' Zeechen ier Dir de Kommando ausféiert an ersetzt se mam Wäert vun der Variabel. De Prozess vun der Bash Variable Substitution gëtt nëmmen eemol gemaach. Wat wa mir nested Variabelen hunn?

Notiz: Mat nested Variabel mengen mir, Variabel déi bannent Variabel deklaréiert ass. Loosst eis den uewe Szenario am Beispill hei ënnen gesinn.

Deklaréiert eng Variabel déi Read-Only an Executable ass wéi hei ënnen.

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

Check de Wäert vun Variabel gespäichert.

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

linux-console.net

Elo deklaréiert eng aner Variabel déi erëm Read-Only an Executable ass.

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

Elo ass d'Situatioun, mir hunn zwou Variabelen definéiert.

'Linux_best_website', de Wäert vun deem ass linux-console.net
an, 'Linux_website', de Wäert vun deem ass Linux_best_website

Wat wier d'Resultat, wa mir de Kommando ënnert enger Linn lafen?

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

Et soll als éischt d'Variabel '$Linux_website' ersetzen, mam Wäert \Linux_best_website an dann \$Linux_best_website ass erëm eng Variabel déi Wäert vun deem ass \linux-console.net. Also de finalen Ausgang vum Kommando hei drënner soll sinn.

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

linux-console.net

Awer leider ass dëst net d'Situatioun, d'Ausgab déi mir kréien ass Linux_best_website.

Grond? Jo! Bash ersetzt de Wäert vun der Variabel nëmmen eemol. Wat iwwer komplex Scripten a Programmer wou mir Variabelen dacks musse ersetzen an och d'Variabel méi wéi eemol musse ersetzen?

Hei kënnt de Kommando 'eval', deen zousätzlech Aarbecht vu variabelen Ersatz méi wéi eemol an engem Skript mécht. Hei ass e Beispill fir d'ganz Aarbecht esou kloer wéi Glas ze maachen.

Deklaréiert eng Variabel x, dee Wäert ass 10.

[email :~/Desktop$ declare x=10

Kuckt de Wäert vun der Variabel x, déi mir just definéiert hunn.

[email :~/Desktop$ echo $yx

x10

Deklaréiert eng Variabel y, dee Wäert ass x.

[email :~/Desktop$ declare y=x

Kuckt de Wäert vun der Variabel y, hu mir just definéiert.

[email :~/Desktop$ echo $y 

x

Hei ass de Problem vun der BASH eng Kéier Variabel Ersatz, déi keng extra Ronn vun der Variabel Ersatz mécht. Mir benotzen 'eval' Kommando fir dëst ze fixéieren.

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

Elo kontrolléiert de Wäert vun der Variabel 'y'.

[email :~/Desktop$ echo $y 

10

Hurra! De Problem gouf fixéiert an de Kommando eval huet d'Course gewonnen :)

Net ze ernimmen, 'eval' Kommando ass ganz hëllefräich a grousse Skriptprogrammer an ass e ganz praktescht Tool.

De leschten awer net mannsten Deel vun dësem Post ass BASH virdefinéiert Variablen. Nee! Gitt keng Panik dës Lëscht ze gesinn. Dir musst ni déi ganz Lëscht erënneren ier Dir ufänkt Scripten ze schreiwen ausser e puer. Als Deel vum Léierprozess presentéiere mir d'BASH virdefinéiert Variabel Lëscht.

Et ginn eng rieseg Lëscht vu Predefinéierte BASH Variablen. Mir hu probéiert eng Lëscht vun am meeschte benotzt ze produzéieren.

Dat ass alles fir elo. Ech wäert erëm hei mat engem aneren interessanten Artikel sinn. Bis dann bleift ofgeschloss a verbonne mat TecMint. Vergiesst net eis Äre wäertvolle Feedback an der Kommentarsektioun hei drënner ze ginn.