Į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 | 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.