Įdėto kintamojo pakeitimas ir iš anksto nustatyti BASH kintamieji sistemoje „Linux“ – 11 dalis


Paskutiniai du straipsniai apie BASH Shell, kuriuose išsamiai aptarėme kintamuosius, buvo labai vertinami mūsų skaitytojų. Mes, kaip Tecmint-Team, labai norime pateikti jums naujausias, naujausias ir aktualias temas, kurios yra išsamiai aptartos. Be to, mes visada stengiamės paliesti pagrindines atitinkamų temų perspektyvas.

Štai paskutinis straipsnis apie „Linux“ kintamuosius, kuriame prieš uždarydami šią temą pamatysime kintamųjų pakeitimą ir „Shell“ apibrėžtus kintamuosius.

„Bash“ atlieka kintamųjų pakeitimą prieš komandą iš tikrųjų įvykdant. „Linux Bash Shell“ prieš vykdydamas komandą ieško visų „$“ ženklų ir pakeičia jį kintamojo reikšme. Bash Variable pakeitimo procesas atliekamas tik vieną kartą. Ką daryti, jei turime įdėtus kintamuosius?

Pastaba: įdėtasis kintamasis reiškia kintamąjį, paskelbtą kintamajame. Pažiūrėkime aukščiau pateiktą scenarijų toliau pateiktame pavyzdyje.

Paskelbkite kintamąjį, kuris yra tik skaitomas ir vykdomas, kaip nurodyta toliau.

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

Patikrinkite saugomo kintamojo reikšmę.

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

linux-console.net

Dabar paskelbkite kitą kintamąjį, kuris vėl yra tik skaitomas ir vykdomas.

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

Dabar situacija yra tokia, kad apibrėžėme du kintamuosius.

„Linux_best_website“, kurios reikšmė yra „linux-console.net“
ir „Linux_website“, kurios reikšmė yra „Linux_best_website“

Koks būtų rezultatas, jei vykdytume žemiau esančią vienos eilutės komandą?

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

Pirmiausia jis turėtų pakeisti kintamąjį „$Linux_website“ reikšme „Linux_best_website“, o tada „$Linux_best_website“ vėl yra kintamasis, kurio reikšmė kuris yra „linux-console.net“. Taigi turėtų būti galutinis toliau pateiktos komandos paleidimo rezultatas.

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

linux-console.net

Deja, taip nėra, gauname išvestį Linux_best_website.

Priežastis? Taip! Bash kintamojo reikšmę pakeičia tik vieną kartą. O kaip su sudėtingais scenarijais ir programomis, kur kintamuosius reikia keisti dažnai, taip pat kintamąjį reikia pakeisti daugiau nei vieną kartą?

Čia ateina komanda „eval“, kuri scenarijuje daugiau nei vieną kartą atlieka papildomą kintamųjų pakeitimo darbą. Pateikiame pavyzdį, kad viskas būtų skaidri kaip stiklas.

Deklaruokite kintamąjį x, kurio reikšmė yra 10.

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

Patikrinkite ką tik apibrėžto kintamojo x reikšmę.

avi@localhost:~/Desktop$ echo $yx

x10

Deklaruokite kintamąjį y, kurio reikšmė yra x.

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

Patikrinkite ką tik apibrėžto kintamojo y reikšmę.

avi@localhost:~/Desktop$ echo $y 

x

Čia yra BASH vienkartinio kintamojo pakeitimo problema, kuri neatlieka papildomo kintamojo pakeitimo rato. Norėdami tai išspręsti, naudojame komandą eval.

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

Dabar patikrinkite kintamojo „y“ reikšmę.

avi@localhost:~/Desktop$ echo $y 

10

Ura! Problema buvo išspręsta ir komanda „eval“ laimėjo lenktynes :)

Jau nekalbant apie tai, kad komanda „eval“ yra labai naudinga didelėse scenarijų programose ir yra labai patogus įrankis.

Paskutinė, bet ne mažiausia šio įrašo dalis yra BASH iš anksto nustatyti kintamieji. Ne! Nepanikuokite matydami šį sąrašą. Jums niekada nereikia prisiminti viso sąrašo prieš pradedant rašyti scenarijus, išskyrus keletą. Kaip mokymosi proceso dalį mes pateikiame BASH iš anksto nustatytą kintamąjį sąrašą.

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

Yra didžiulis iš anksto nustatytų BASH kintamųjų sąrašas. Mes bandėme sudaryti dažniausiai naudojamų produktų sąrašą.

Tai kol kas viskas. Aš vėl čia su kitu įdomiu straipsniu. Iki tol sekite naujienas ir prisijunkite prie TecMint. Nepamirškite pateikti mums vertingų atsiliepimų toliau pateiktame komentarų skyriuje.