Weboldal keresés

Beágyazott változók helyettesítése és előre definiált BASH-változók Linuxban – 11. rész


A BASH Shellről szóló utolsó két cikk, ahol részletesen tárgyaltuk a változókat, nagyra értékelték olvasóink. Mi, mint Tecmint-Team, nagyon szívesen nyújtunk Önnek legfrissebb, naprakész és releváns témákat, amelyek részletesen lefedve vannak. Sőt, mindig igyekszünk megérinteni a megfelelő témák főbb szempontjait.

Itt található az utolsó cikk a Linux változókról, ahol a változók helyettesítését és a Shellben definiált változókat fogjuk látni a témakör bezárása előtt.

A Bash a parancs tényleges végrehajtása előtt végrehajtja a változók helyettesítését. A Linux Bash Shell a parancs végrehajtása előtt megkeresi az összes „$” jelet, és lecseréli a változó értékére. A Bash Variable behelyettesítését csak egyszer hajtják végre. Mi van, ha beágyazott változóink vannak?

Megjegyzés: Beágyazott változó alatt a változón belül deklarált változót értjük. Lássuk a fenti forgatókönyvet az alábbi példában.

Deklaráljon egy változót, amely csak olvasható és végrehajtható az alábbiak szerint.

avi@localhost:~$ declare -rx Linux_best_website="linux-console.net"

Ellenőrizze a tárolt változó értékét.

avi@localhost:~$ printf "%s" "$Linux_best_website" 

linux-console.net

Most deklaráljon egy másik változót, amely ismét csak olvasható és végrehajtható.

avi@localhost:~$ declare -rx Linux_website="Linux_best_website"

A helyzet most az, hogy két változót definiáltunk.

„Linux_best_website”, amelynek értéke „linux-console.net ”
és a „Linux_website”, amelynek értéke „Linux_best_website”

Mi lenne az eredmény, ha az alábbi egysoros parancsot futtatnánk?

avi@localhost:~$ printf "%s" "$Linux_website"

Először le kell cserélnie a „$Linux_website” változót „Linux_best_website” értékre, majd a „$Linux_best_website” ismét egy változó, amelynek értéke amely a „linux-console.net”. Tehát az alábbi parancs futtatásának végső kimenete legyen.

avi@localhost:~$ printf "%s" "$Linux_website" 

linux-console.net

De sajnos nem ez a helyzet, a kimenet a Linux_best_website.

Ok? Aha! A Bash csak egyszer helyettesíti a változó értékét. Mi a helyzet az összetett szkriptekkel és programokkal, ahol gyakran kell helyettesítenünk a változókat, és többször is be kell cserélnünk a változókat?

Itt jön az 'eval' parancs, amely egy szkriptben többször is végrehajt további változó-helyettesítési munkát. Íme egy példa, hogy az egész olyan tiszta legyen, mint az üveg.

Deklaráljon egy x változót, amelynek értéke 10.

avi@localhost:~/Desktop$ declare x=10

Ellenőrizze az imént definiált x változó értékét.

avi@localhost:~/Desktop$ echo $yx

x10

Deklaráljon egy y változót, amelynek értéke x.

avi@localhost:~/Desktop$ declare y=x

Ellenőrizze az imént definiált y változó értékét.

avi@localhost:~/Desktop$ echo $y 

x

Itt van a BASH egyszeri változóhelyettesítés problémája, amely nem hajt végre további változók behelyettesítését. Az 'eval' parancsot használjuk ennek javítására.

avi@localhost:~/Desktop$ eval y=$x

Most ellenőrizze az „y” változó értékét.

avi@localhost:~/Desktop$ echo $y 

10

Hurrá! A hibát javítottuk, és az ’eval’ parancs nyerte a versenyt :)

Arról nem is beszélve, hogy az 'eval' parancs nagyon hasznos a nagy script programokban, és nagyon praktikus eszköz.

A bejegyzés utolsó, de nem utolsó része a BASH előre definiált változói. Nem! Ne essen pánikba a lista láttán. Soha nem kell emlékeznie a teljes listára, mielőtt elkezdi írni a szkripteket, kivéve néhányat. A tanulási folyamat részeként bemutatjuk a BASH előre definiált List változót.

No. BASH VARIABLE RESULT
1 auto_resume Process command completion for the stopped jobs.
2 BASH PATH of the shell.
3 BASH_ENV Shows the name of the profile file
4 BASH_VERSION Shows the version of Bash
5 BASH_VERSINFO Shows Detailed version information.
6 BASH_VERSINFO[0] The major version number (the release).
7 BASH_VERSINFO[1] The minor version number (the version).
8 BASH_VERSINFO[2] The patch level.
9 BASH_VERSINFO[3] The build version.
10 BASH_VERSINFO[4] The release status (for example, beta1 ).
11 BASH_VERSINFO[5] The value of MACHTYPE .
12 CDPATH List of directories separated by colon.
13 COLUMNS Number of Characters per line on Standard Output.
14 EUID User ID of the current user.
15 FCEDIT The default text editor for the fc command.
16 FUNCNAME The name of the fun
17 GROUPS Groups of which the user is a Member.
18 HISTFILE The file containing the command history.
19 HOME The name of your home directory.
20 LINES Number of horizontal lines on Standard Output.
21 MAIL Name of a file to check for incoming mail
22 OSTYPE Name of the operating system.
23 OLDPWD The previous working directory
24 PWD The current working directory
25 RANDOM Prints a random number
26 SHELL The preferred shell to use
27 TIMEFORMAT The format for the time command.
28 UID The ID of the current user

Az előre definiált BASH-változók hatalmas listája van. Megpróbáltuk összeállítani a leggyakrabban használt listát.

Ez minden most. Ismét itt leszek egy másik érdekes cikkel. Addig is maradjon velünk, és csatlakozzon a TecMinthez. Ne felejtse el megadni nekünk értékes visszajelzését az alábbi megjegyzés részben.