Indlejret variabel erstatning og foruddefinerede BASH-variabler i Linux - del 11


De sidste to artikler om BASH Shell, hvor vi diskuterede variabler i detaljer, blev meget værdsat blandt vores læsere. Vi som Tecmint-Team er meget interesserede i at give dig nyeste, opdaterede og relevante emner, der er dækket i detaljer. Desuden forsøger vi altid at røre ved store perspektiver for de tilsvarende emner.

Her er den sidste artikel om Linux-variabler, hvor vi vil se variabelsubstitution og variabler defineret i Shell, inden vi lukker dette emne.

Bash udfører variabel erstatning, før kommandoen virkelig udføres. Linux Bash Shell søger efter alt '$' -tegnet, før den udfører kommandoen og erstatter den med værdien af variablen. Processen med Bash Variabel erstatning udføres kun en gang. Hvad hvis vi har indlejrede variabler?

Bemærk: Ved indlejret variabel mener vi, variabel erklæret inden i variabel. Lad os se ovenstående scenario i eksemplet nedenfor.

Erklær en variabel, der er skrivebeskyttet og eksekverbar som nedenfor.

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

Kontroller værdien af den lagrede variabel.

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

linux-console.net

Erklær nu en anden variabel, som igen er skrivebeskyttet og eksekverbar.

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

Nu er situationen, vi har defineret to variabler.

'Linux_best_website', hvis værdi er "linux-console.net"
og 'Linux_website', hvis værdi er "Linux_best_website"

Hvad ville resultatet være, hvis vi kører nedenstående en-linjekommando?

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

Det skal først erstatte variablen ' $ Linux_website ' med værdien " Linux_best_website " og derefter er " $ Linux_best_website " igen en variabel, værdien af som er " linux-console.net ". Så den endelige output for at køre nedenstående kommando skal være.

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

linux-console.net

Men desværre er dette ikke situationen, den output, vi får, er Linux_best_website .

Grund? Jep! Bash erstatter værdien af variablen kun en gang. Hvad med komplekse scripts og programmer, hvor vi ofte skal erstatte variabler såvel som behov for at erstatte variablen mere end en gang?

Her kommer kommandoen ' eval ', der udfører yderligere arbejde med variabel erstatning mere end en gang i et script. Her er et eksempel for at gøre hele arbejdet så klart som glas.

Erklær en variabel x , hvis værdi er 10 .

[email :~/Desktop$ declare x=10

Kontroller værdien af variablen x , vi har lige defineret.

[email :~/Desktop$ echo $yx

x10

Erklær en variabel y , hvis værdi er x .

[email :~/Desktop$ declare y=x

Kontroller værdien af variablen y , vi har lige defineret.

[email :~/Desktop$ echo $y 

x

Her er problemet med BASH en tidsvariabel udskiftning, som ikke udfører en ekstra runde med variabel udskiftning. Vi bruger kommandoen ' eval ' til at løse dette.

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

Kontroller nu værdien af variablen ' y '.

[email :~/Desktop$ echo $y 

10

Hurra! Problemet blev løst, og kommandoen 'eval' vandt løbet :)

For ikke at nævne, kommandoen ' eval ' er meget nyttig i store script-programmer og er et meget praktisk værktøj.

Den sidste men ikke mindst del af dette indlæg er BASH foruddefinerede variabler. Ingen! Få ikke panik ved at se denne liste. Du behøver aldrig at huske hele listen, før du begynder at skrive scripts undtagen nogle få. Som en del af læringsprocessen præsenterer vi BASH's foruddefinerede variabel liste.

Der er en enorm liste over foruddefinerede BASH-variabler. Vi har forsøgt at fremstille en liste over de mest anvendte.

Det er alt for nu. Jeg kommer her igen med en anden interessant artikel. Indtil da hold dig opdateret og tilsluttet TecMint. Glem ikke at give os din værdifulde feedback i kommentarfeltet nedenfor.