Katsaus Linux-muuttujiin Shell-komentosarjakielellä - osa 9


Olemme jo kirjoittaneet sarjan artikkeleita Linux Shell Scriptingistä, joka oli lämpimästi tervetullut tuolloin, ja se oli paljon ajankohtaista myös nyt. Tässä on linkki shell-komentosarjoja käsittelevään artikkelikokoelmaan.

  1. Opi Linux Shell Scripting

Tässä artikkelissa näemme muuttujat, sen suorittamisen ja toteutuksen shell-komentosarjassa.

Komennon lähtö voidaan ohjata vakiotulosteeseen tai tiedostoon ja se voidaan tallentaa myös muuttujaan. Jos komennon lähtö on riittävän suuri, jotta se ei sovi näyttöön, meillä on vain mahdollisuus tallentaa ulostulo tiedostoon muuttujaan. Yksi etu säästää tuotos muuttujaan on nopeampi tutkimuksen nopeus. Muuttujat tallennetaan muistiin, ja siksi sillä on taipumus olla nopeaa verrattuna tiedostoon hakemiseen.

Muuttujat ovat tärkeä komponentti, jota käytetään Shell-komentosarjoissa, ja ne ilmoitetaan bash-komennolla "Ilmoita". Ilmoittaaksemme muuttujan sanoen "taso", meidän on suoritettava alla oleva komento.

$ declare LEVEL

Huomaa: Korn-komentotulkin yhteensopivuutta varten on käytettävä sisäänrakennettua käskyä ”typecast”. Ilmoita on edistyneempi ja sisältää kaikki ominaisuudet, joten sitä suositellaan käytettäessä BASHia.

  1. Muuttujan nimen on perusteltava muuttujan käyttö komentosarjassa.
  2. On suositeltavaa käyttää samaa muuttujanimeä koko ohjelmassa.
  3. Muuttujien nimi voi olla sekä isoja että pieniä kirjaimia, mutta yleisesti ottaen kuorikomennot ovat pieniä, joten meidän tulisi käyttää muuttujien nimeä isoilla kirjaimilla sekaannusten poistamiseksi. esim. TOTAL_BILLED_AMOUNT, MYYNTIRAPORTTI, ORDER_RECEIPT jne.

Muuttujalle voidaan määrittää arvo käyttämällä yhtäläisyysmerkkiä (=). Jos haluat määrittää muuttujalle tyhjän merkkijonon, emme saa antaa mitään arvoa yhtäläisyysmerkin jälkeen.

$ LEVEL =

Tarkista muuttujaan ”LEVEL” tallennettu arvo muodossa.

$ printf "%i" $LEVEL

printf, komento, jonka suurin osa C-ohjelmoijista tietää, tulostaa tietoja. % i - edustaa kokonaislukua. Voimme korvata sen% c merkillä tai% c merkkijonolla tarpeen mukaan.

$LEVEL: Huomaa ”$”, joka toimii muuttujan ”LEVEL” arvon korvaajana.

$ printf "%i" $LEVEL
0

Määritä muuttujalle arvo.

$ LEVEL=0

Tarkista muuttujan tallennetut tiedot.

$ printf "%i" $LEVEL
0

HUOMAUTUS: On mielenkiintoista huomata, että molemmissa tapauksissa, kun emme määrittäneet arvoa muuttujalle ja kun annoimme arvon 0 0 muuttujalle 'LEVEL' ulostulot 0. Vaikka lähtö on molemmissa tapauksissa sama mutta shell-komentosarja käsittelee molemmat muuttujailmoitukset eri tavalla.

Määritä muuttujalle uusi arvo.

$ LEVEL=121

Tarkista muuttujan tallennetut tiedot.

$ printf "%i" $LEVEL
121

Ilmoita on BASH-komento ja se luo muuttujan vain suoritettaessa. Näin luotu muuttuja pysyy muistissa, kunnes komentosarja pysähtyy tai muuttuja tuhoutuu.

$ unset LEVEL

BASH: lla on ennalta määritelty yli 50 muuttujaa. Joillakin näistä muuttujista on erityinen merkitys, joka liitetään BASH: iin, esim. Muuttuja RANDOM antaa satunnaisluvun. Jos se ei ole asetettu ja määritetään sitten uudelleen, alkuperäinen muuttujan arvo menetetään lopullisesti. Siksi on suositeltavaa olla käyttämättä mitään järjestelmän määrittelemää muuttujaa.

Tässä on luettelo hyödyllisistä BASH-muuttujista.

  1. BASH - Bashin koko polunimi.
  2. BASH_ENV - Shell-komentosarjassa profiilitiedoston nimi, joka suoritettiin ennen komentosarjan aloittamista.
  3. BASH_VERSION - Bash-versio (esimerkiksi 2.04.0 (1) -julkaisu).
  4. SARAKKEET - merkkien lukumäärä rivillä näytöllä (esimerkiksi 80).
  5. HOSTNAME - tietokoneen nimi. Joissakin Linux-versioissa tämä voi olla koneen nimi. Toisissa tapauksissa se voi olla täysin pätevä verkkotunnus.
  6. HOSTTYPE - tietokoneen tyyppi.
  7. HOME - kotihakemistosi nimi.
  8. OSTYPE - käyttöjärjestelmän nimi.
  9. PATH - kaksoispisteillä erotettu luettelo hakupoluista suoritettavan komennon löytämiseksi.
  10. PPID - Shellin ylätason prosessin tunnus.
  11. PROMPT_COMMAND - komento, joka suoritetaan ennen PS1: n ensisijaisen kehotteen merkkijonon asetusta.
  12. PWD - nykyinen työkansio (cd-komennon asettama).
  13. RANDOM - Palauttaa satunnaisluvun välillä 0 ja 32767 aina, kun siihen viitataan.
  14. KUORI - Suositeltava kuori; ohjelmille, jotka käynnistävät kuoren sinulle.
  15. TERM - pääteemulointityyppi (esimerkiksi konsoli).

Sanan jakamisen sääntö.

$ LEVEL=0
$ printf "%i" $LEVEL
0

AND

$ LEVEL=”0”
$ printf "%i" $LEVEL
0

Molemmissa tapauksissa tuotos pysyy samana. Joten mikä ero on tuloksessa lainausta käytettäessä?

Antaa tarkistaa saman erilaisilla muuttujatiedoilla.

$ LEVEL=0 ; 1 ; 2 ; 3 ; 4 ; 5
bash: 1: command not found 
bash: 2: command not found 
bash: 3: command not found 
bash: 4: command not found 
bash: 5: command not found
$ printf "%i" $LEVEL
0

Puhumattakaan, tulos ei ole oikea. BASH vie välilyönnin '0': n jälkeen päättymiseksi ja muuttujan arvoksi asetetaan siten '0'. Yritämme nyt käyttää muuttujien lainausta alla.

$ LEVEL=”0 ; 1 ; 2 ; 3 ; 4 ; 5”
$ printf "%s" $LEVEL 
0;1;2;3;4;5

Silti tulos ei ole oikea. BASH otti muuttujan arvot ja poisti kaikki välit niiden väliltä. Siksi printf ei tulkinnut 0,1,2,3,4,5 erillisinä arvoina. Joten mikä on ratkaisu?

printf "%s" "$LEVEL" 
0 ; 1 ; 2 ; 3 ; 4 ; 5

Joo! Vaihtelevan korvauksen laittaminen lainausmerkkien alle on ratkaisu. Lainaukset ryhmittävät merkit kuoressa ja tulkitsevat erikoismerkit mielekkäällä tavalla.

Lainausmerkkejä voidaan käyttää taaksepäin, ja muuttujien korvaaminen on hyvä liittää lainausmerkeihin. Lisäksi sitä voidaan käyttää erottamaan kokoteksti lainauksista. Tässä on esimerkki.

$ LEVEL=5 
$ FLAG_MESSAGE="I HAVE CLEARED LEVEL""$LEVEL"". I Deserve appreciation." 
$ printf “%s” “$FLAG_MESSAGE”
“I HAVE CLEARED LEVEL5. I Deserve appreciation.”

Lainatun tekstin palojen erottaminen välilyönnillä johtaa samaan ongelmaan kuin edellä keskusteltiin. Bash kohtelee tyhjää tilaa lopetuksena. Toinen tapa muuttuvasta korvaamisesta on.

$ LEVEL=5

$ FLAG_MESSAGE="I HAVE CLEARED LEVEL ${LEVEL}. I Deserve appreciation." 

$ printf “%s” "$FLAG_MESSAGE" 
“I HAVE CLEARED LEVEL 5. I Deserve appreciation.”

Yksittäiset lainausmerkit rajoittavat BASH: n tulostamista erikoismerkeistä.

$ printf “%s” '$FLAG_MESSAGE'
“$FLAG_MESSAGE”

Käänteinen viiva toimii kuin yksi lainaus yhdelle hahmolle. Oletko ajatellut, kuinka tulostat (“)?

$ printf "%c" "\""

Kun% q on ryhmitelty printf: n kanssa, jokaisella sanalla on takaviiva, jotta sanaväli voidaan varmistaa.

$ LEVEL=5

$ FLAG_MESSAGE="I HAVE CLEARED LEVEL ${LEVEL}. I Deserve appreciation." 

$ printf “%q” "$FLAG_MESSAGE" 
“I\ HAVE\ CLEARED\ LEVEL\ 5.\ I\ Deserve\ appreciation.”

Tässä kaikki tältä erää. Yritämme aina tarjota lukijoillemme artikkeleita, jotka ovat heille aina hyödyllisiä. Edellä mainittu artikkeli on valtava, joten muut aiheet ja esimerkit tuotetaan seuraavassa artikkelissa, joka sisältää "Muuttujan attribuutit", "Muuttujan vienti" jne.

Siihen asti Pysy kuulolla ja yhteydessä linux-console.netiin. Älä unohda antaa meille arvokasta palautettasi alla olevassa kommenttiosassa.