"Linux-muuttujien" ymmärtäminen ja kirjoittaminen Shell-komentosarjassa - Osa 10


Linuxin komentosarjakieli on aina ollut kuuma aihe ja tulee aina olemaan myös tulevaisuudessa. Shell Scripting Language on maaginen, ja sen tekeminen on niin helppoa skriptikielellä kuin millä tahansa muulla kielellä. Se vaatii kuitenkin syvällistä tietoa siitä, mitä teemme ja mitä tuloksia odotetaan.

Kaikki lukijoillemme kirjoittamamme shell-skriptiartikkelit ovat erittäin arvostettuja, mukaan lukien viimeinen "Insight of Linux Variables". Laajennamme viimeistä artikkelia uudelle tasolle.

Muuttujan attribuutit

Jokaisella Linux-ympäristön muuttujalla on tietyt vaihtoehdot, ja niitä kutsutaan "attribuutteiksi". Nämä valinnat tai attribuutit voidaan ottaa päälle ja pois tarvittaessa tilanteen mukaan komennolla "declare".

Esimerkki muuttujan attribuutista on kytkimen käyttö -i, joka ottaa käyttöön kokonaislukumääritteen vastaavalle muuttujalle. Vaikka ei-numeerinen arvo välitetään kytkimelle -i, se ei anna virheilmoitusta ja tulosta arvoa 0 kokonaislukutulkinnana. Tässä se käy selvemmin alla olevasta esimerkistä.

Ilmoita muuttuja Kokonaisluku, lasku=121

avi@localhost:~$ declare -i bill=121

Tulostaf muuttuvan laskun arvo.

avi@localhost:~$ printf "%d\n" "$bill" 

121

Olkoon muuttujan arvo merkkijono. Muuttuva lasku on jo ilmoitettu, sitä ei tarvitse ilmoittaa toista kertaa. Muuta vain muuttujan arvoa as.

avi@localhost:~$ bill=tecmint

Tulosta nyt taas muuttuvan laskun arvo.

avi@localhost:~$ printf "%d\n" "$bill" 

0

Huomaa "0" virheilmoituksen tilalle.

Nyt kysymys kuuluu, kuinka tietää jo ilmoitettujen muuttujien attribuutit?
avi@localhost:~$ declare -p bill 

declare -i bill="121"

Tässä -p (tarkistaa tulostusta) -kytkin tulee apuun.

Jälleen, mitä minun pitäisi tehdä muuttaakseni muuttujan attribuutit käytöstä?

Muuttujan attribuuttien poistamiseksi pois käytöstä tarvitsemme vain + (plus) -merkin juuri vaihdon eteen. Tässä se käy selkeämmin alla olevasta esimerkistä.

Kytke pois päältä yllä olevan muuttujan kokonaislukumäärite.

avi@localhost:~$ declare +i bill

Tarkista muuttujan arvo.

avi@localhost:~$ printf "%d\n" "$bill" 

bash: printf: bill: invalid number
0

Tulosta nyt muuttujan arvo kytkinmerkkijonolla.

avi@localhost:~$ printf "%s\n" "$bill" 

tecmint

Tässä yllä olevassa esimerkissä bash ei voinut arvioida ei-numeerista arvoa virheeksi, mutta printf tulkitsee, mikä voisi olla numero ja mikä ei.

Vain luku -muuttujat

Olet ehkä kuullut vain lukumuistin (ROM), mutta mikä on vain luku -muuttuja? Onko sillä samankaltaisuutta ROMin kanssa?

No, vain luku -muuttujat, kuten vain lukumuisti, ovat jotain, jonka arvoa ei voi muuttaa, kun se on määritetty. Siksi sitä kutsutaan vain luku -käyttöiseksi. Et voi kirjoittaa, muokata tai muokata uutta arvoa tälle muuttujalle. Tässä on esimerkki käyttäen esimerkkiä.

Decale vain luku (-r) muuttujan nimi, jonka arvo on "linux-console.net".

avi@localhost:~$ declare -r name="linux-console.net"

Tulosta f yllä ilmoitetun muuttujan arvo.

avi@localhost:~$ printf "%s\n" "$name" 

linux-console.net

Yritä muuttaa muuttujan arvoa.

avi@localhost:~$ declare -r name="Avishek" 

bash: declare: name: readonly variable

Kuten edellä mainittiin, vain luku -muotoisen muuttujan attribuutteja voidaan muuttaa käyttämällä +-merkkiä.

Muuttujien vienti Linuxissa

Kaikki shell-skriptissä ilmoitetut shell-muuttujat ovat käytettävissä, kunnes komentosarja on käynnissä. Skriptin ulkopuolella skriptin muuttujaa ei ole olemassa. Muuttujien saattamista saataville skriptin ulkopuolella kutsutaan muuttujien viemiseksi.

Muuttuja voidaan viedä kuoren ulkopuolelle kytkimellä declare -x (export), joka kuittaa shellille sen, mitä halusit viedä. Ilmoittaa vientikytkintä voidaan käyttää.

avi@localhost:~$ declare -x variable=”Constant_Value”

Kaikki muuttujaan skriptin ollessa käynnissä tehdyt muutokset menetetään, kun muuttuja viedään komentosarjan ulkopuolelle. Muuttujan vienti on erittäin tärkeää shell-komentosarjassa.

Haluamme muuttujan, jonka pitäisi olla vain luku -tilassa ja saatavilla skriptin ulkopuolella. Meidän on käytettävä kytkintä -r ja kytkintä -x samanaikaisesti.

avi@localhost:~$ declare -rx variable=”Constant_Value”

ympäristömuuttujat

Muuttujat, jotka jaetaan ohjelman ja niitä suorittavan ohjelman välillä. Ympäristömuuttujia voidaan viedä, mutta attribuutteja ei voi määrittää sille.

Ymmärtää yllä olevan teorian käytännössä. Tässä meillä on kaksi skriptiä 0.sh ja 1.sh.

0.sh
#!/bin/bash 
declare -rx name=Tecmint 
bash 0.sh 
exit 0

Ja toinen käsikirjoitus on.

1.sh
#!/bin/bash 
printf "%s\n" "$name" 
name=linux-console.net 
printf "%s\n" "$name"
exit 0

Tässä tapahtuu, että muuttuja (nimi) ilmoitetaan vain luku -muotoiseksi ja viedään ja heti sen jälkeen kutsutaan toista komentosarjaa.

Toinen komentosarja tulosti juuri muuttujan ensimmäisestä komentosarjasta, joka vietiin ensimmäisessä printf-käskyssä. Toisessa printf-käskyssä se näyttää muuttujalle 'name' annetun uuden arvon.

Ei tarvitse huolehtia, että muuttuja oli vain luku -tilassa, miten se voidaan määrittää uudelleen. Etkö muista, että "Kaikki muutokset, jotka on tehty muuttujaan skriptin ollessa käynnissä, menetetään, kun muuttuja viedään skriptin ulkopuolelle. ”

Viitteet

declare-komento sallii kaikki alla olevat kytkimet ja niiden yhdistelmät.

  1. -a : Ilmoittaa taulukon.
  2. -f : Näytön toiminto ja määritelmä.
  3. -F : Näytä toiminnon nimi.
  4. -r : Määritä muuttuja vain luku -muotoiseksi.
  5. -x : Määritä muuttuja vietäväksi.
  6. -I : Määritä muuttuja kokonaisluvuksi.

Tässä kaikki tältä erää. Seuraavassa artikkelissa käsittelemme tapoja korvata muuttujat eval-komennolla ja muuttujat, jotka on jo määritetty bashissa ennen tämän aiheen sulkemista. Toivottavasti te ihmiset nautitte matkastasi käsikirjoituksen syventämiseen. Pysy kuulolla siihen asti ja ole yhteydessä linux-console.netiin.