$ () - ja $ {} -laajennusten käyttäminen Shell -skriptissä

How Use Expansions Shell Script

Jos käytät Linux -järjestelmää, saatat jo tietää, kuinka tärkeä käyttöliittymä on järjestelmän vuorovaikutuksessa. Useimmissa Linux -jakeluissa Bash on oletuskuori, jota käytämme komentojen suorittamiseen ja komentosarjojen suorittamiseen. Shell -komentosarja on joukko komentoja, joita suoritettaessa käytetään joidenkin hyödyllisten toimintojen suorittamiseen Linuxissa. Tämä käyttäjän kirjoittama .sh -tiedosto sisältää kaikki tehtävän suorittamiseen käytetyt komennot, jotta meidän ei tarvitse suorittaa niitä yksitellen manuaalisesti.

Tässä opetusohjelmassa selitämme kaksi hyödyllisintä bash -laajennusta, joita käytetään komentosarjoissa:



  • $ () - komennon korvaaminen
  • $ {} - parametrin korvaaminen/muuttujan laajennus

Skriptille suoritetaan laajennus Shellissä sen jälkeen, kun se on jaettu rahakkeisiin. Tunnus on merkkijono, jonka kuori pitää yhtenä yksikkönä. Se voi olla joko sana tai operaattori.



Olemme suorittaneet kaikki tässä artikkelissa mainitut esimerkit ja komentosarjat Debian 10 Buster -järjestelmässä. Voit kuitenkin kopioida ne helposti useimmissa Linux -kuorissa. Tässä opetusohjelmassa käytämme Debianin oletuskomentoa Terminal. Debianissa voit käyttää sitä sovelluskäynnistimen hakupalkin kautta seuraavasti:



Pääset sovellusten käynnistysohjelmaan painamalla näppäimistön Super/Windows -näppäintä.

$ () Komentojen korvaaminen

Virallisen GNU Bash Reference -oppaan mukaan:



Komentojen korvaaminen sallii komennon tuloksen korvata itse komennon. Bash suorittaa laajennuksen suorittamalla komennon ja korvaamalla komennon korvaamisen komennon vakiolähdöllä, ja kaikki peräkkäiset rivit poistetaan. Upotettuja uusia rivejä ei poisteta, mutta ne voidaan poistaa sanojen jakamisen aikana. Komentojen korvaaminen tapahtuu, kun komento on suljettu seuraavasti:

$(komento)
tai
``komento``

Esimerkiksi seuraavat echo -komennot korvaavat päivämäärän komennon tuloksen tulona:

$heitti pois$(Päivämäärä)
$heitti pois''Päivämäärä''

Voit myös käyttää komentojen korvaamista arvon määrittämiseen muuttujalle. Tulostamme esimerkiksi tämän päivän päivämäärän muuttujan TODAY kautta seuraavasti:

$TÄNÄÄN= $(Päivämäärä)
$heitti pois ''$ TODAY''

Toinen komennon korvaamisen apuohjelma on kuorisilmukoissa syötteen saamiseksi. Tässä yritämme tulostaa kaikki .txt -tiedostot kotikansioissamme käyttämällä komentojen korvaamista:

vartenfsisään /Koti/sinulle/ *.txt
tehdä
heitti pois ''$ f''
tehty

Komentojen korvaamisen käyttäminen Shell -komentosarjassa

Yllä olevat esimerkit ovat muutamia tapoja, joilla voit hyödyntää komentosarjojen korvaamisen voimaa komentotiedostossasi. Tässä on esimerkkiraportti, jonka voimme tulostaa seuraavan komentosarjan avulla:

#!/bin/sh

heitti pois ***Tilanneraportti***

TÄNÄÄN= $(Päivämäärä)
heitti pois 'Tänään on$ TODAY''

KÄYTTÄJÄT= $(WHO | WC-he)
heitti pois ''$ USERSkäyttäjät ovat tällä hetkellä kirjautuneita '

KÄYTTÖASTE= $(Päivämäärä;käyttöaste)
heitti pois 'Käyttöaika on$ UPTIME''

Komentojen korvaamista on käytetty kolmesti tässä skriptissä; päivämäärän, kirjautuneiden käyttäjien ja käyttöajan tulostamisessa. Tallensimme komentosarjan seuraavasti:

Teki sen suoritettavaksi ja suoritti sen sitten seuraavan komennon kautta:

$chmod+ x status.sh
$./statys.sh

Tässä on status.sh -skriptimme tulos:

Voit tietysti luoda mielekkäämpiä skriptejä noudattamalla juuri mainitsemiamme esimerkkejä.

$ {} Parametrin korvaaminen/laajentaminen

Parametri Bashissa on entiteetti, jota käytetään arvojen tallentamiseen. Parametriin voi viitata numerolla, nimellä tai erityisellä symbolilla. Kun parametriin viitataan numerolla, sitä kutsutaan a: ksi sijaintiparametri . Kun parametriin viitataan nimellä, sitä kutsutaan a muuttuja . Kun parametriin viitataan erityisellä symbolilla, se tarkoittaa, että ne ovat automaattisesti asetettavia parametreja, joilla on erityiskäyttöä.

Parametrien laajentaminen/korvaaminen on prosessi arvon noutamiseksi viitatusta kokonaisuudesta/parametrista. Aivan kuin laajennat muuttujaa hakemaan sen arvoa.

Yksinkertaisin mahdollinen parametrien laajennussyntaksi on seuraava:

Voit käyttää parametrin laajennusta Bashissa seuraavasti:

$ {parameter}

Esimerkiksi yksinkertaisin käyttö on korvata parametri sen arvolla:

$nimi='john doe'
$heitti pois $ {name}

Tämä komento korvaa muuttujan nimen arvon, jota echo -komento käyttää:

Saatat ajatella, että sama voidaan saavuttaa välttämällä kiharareunuksia seuraavasti:

Vastaus on, että parametrien laajentamisen aikana nämä kiharat aaltosulkeet auttavat rajaamaan muuttujan nimen. Selitämme, mitä tarkoitamme rajoittamisella tässä. Anna minun suorittaa seuraava komento järjestelmässäni:

$heitti pois 'Henkilön nimi on$ name_''

Tulos ei tulostanut muuttujan nimen arvoa, koska järjestelmä ajatteli, että tarkoitan muuttujan nimeä_. Siten muuttujanimeäni ei ole rajattu. Seuraavassa esimerkissä olevat aaltosulkeet rajaavat muuttujan nimen ja palauttavat tulokset seuraavasti:

$heitti pois 'Henkilön nimi on$ {name}_ '

Tässä on kaikki tapoja, joilla muuttujat korvataan Shellissä:

$ {variable} Tämä komento korvaa muuttujan arvon.
$ {muuttuja: -word} Jos muuttuja on nolla tai jos sitä ei ole asetettu, muuttuja korvataan sanalla. Muuttujan arvo ei muutu.
$ {muuttuja: = sana} Jos muuttuja on nolla tai jos sitä ei ole asetettu, muuttujan arvoksi asetetaan sana.
$ {variable:? message} Jos muuttuja on nolla tai jos sitä ei ole asetettu, viesti tulostetaan tavalliseen bash -virheeseen.
$ {muuttuja:+sana} Jos muuttuja on asetettu, sana korvataan muuttujalla. Muuttujan arvo ei kuitenkaan muutu.

Yllä olevat esimerkit ovat muutamia tapoja, joilla voit hyödyntää muuttuvan substituution voimaa Bashissa. Voit sisällyttää nämä tavat käyttää laajennusta shell -komentosarjoissasi saavuttaaksesi tehtävän parhaalla mahdollisella tavalla.