Bash 'jos muu' -lausunto: opetusohjelma ja esimerkkejä

Bashin if…else-käskyn käyttö ehdollisen koodin suorittamiseen.

Bash (Bourne Again Shell) on komentotulkin komentokehote ja komentosarjakieli GNU/Linux-käyttöjärjestelmissä. Se on oletuskuori useimmille Linux-jakeluille.

Ehdolliset lausunnot ovat elintärkeitä kaikilla ohjelmointikielellä, sekä käännettynä että käsikirjoitettuna. Ne antavat käyttäjän suorittaa koodinpalan ennalta määrätyn ehdon perusteella, mikä on yksi ohjelmointilogiikan perusta. Tässä artikkelissa opimme käyttämään tai muuten ehdollinen lause Bashissa.

Johdanto

The tai muuten Bashin lausekkeen avulla käyttäjä voi muokata koodikulkua olosuhteiden perusteella. Käyttäjä voi määrittää suoritettavat erilliset koodilohkot, joista vain yksi suoritetaan lopulta ajon aikana, riippuen vastaavasta ehdosta, joka täyttyy.

Huomaa, että voidaan määrittää enemmän kuin kaksi ehtoa, joille elif lausuntoa voidaan käyttää. Käyttäjä voi antaa minkä tahansa määrän ehtoja käyttämällä elif, ja lopuksi oletusehto, jossa käytetään muu lohko. Katsotaanpa tästä lisää alla olevassa syntaksissa ja esimerkeissä.

Yleinen syntaksi

Yleinen syntaksi kohteelle tai muuten Bashissa oleva lausunto on:

jos sitten  muu  fi

Täällä, jos tyydyttää, eli jos se palauttaa 0 (onnistuminen), koodilohko 1 suoritetaan. Jos ehto ei palauta arvoa 0, eli se palauttaa virhetilan, koodilohko 2 suoritetaan. The tai muuten lohko päättyy kirjaimeen a fi lausunto.

Jos useat lohkot vastaavat useita ehtoja,elif käytetään:

jos sitten  elif siis  elif siis  ... ... muuta  fi

Täällä ehdot tarkistetaan järjestyksessä ja ensimmäisen ehdon koodilohko, joka palauttaa tilan 0 (onnistuminen), suoritetaan. Esim. jos palauttaa nollasta poikkeavan tilan (virhe), sitten on tarkistettu. Jos palauttaa tilan 0, teloitetaan. Tämän jälkeen muita ehtoja ei tarkisteta ja koodin suoritus jatkuu koodin jälkeen fi lausunto.

Jos mikään ehdoista ei palauta tilaa 0, muussa lohkossa suoritetaan. Huomaa, että else-lohko on valinnainen. Jos mikään ehto ei täyty, samoin kuin ei muu lohko on määritetty, mitään ehdollista koodilohkoa ei suoriteta, ja koodin suoritus jatkuu koodille sen jälkeen fi lauseke alla olevan vuokaavion mukaisesti.

Huomaa, että sitten lauseketta tulee käyttää vasta sen jälkeen jos ja elif lausuntoja eikä vaadita sen jälkeen muu lausunto.

Esimerkkejä

Suorittaaksesi koodilohkon jos muuttujalla on tietty arvo:

x=0 jos [ $x -eq 0 ] sitten echo "X:n arvo on 0" muuten kaiku "X:n arvo ei ole 0" fi

Useiden arvojen tarkistaminen:

x=2 jos [ $x -eq 0 ] sitten toista "X:n arvo on 0" elif [ $x -eq 1 ] sitten toista "X:n arvo on 1" elif [ $x -eq 2 ] sitten toista "arvo X on 2" muuten echo "X:n arvo ei ole 0" fi

Edellytykset voivat olla mitä tahansa Linux-komentoja. Vastaava koodilohko suoritetaan, jos komento suoritetaan onnistuneesti.

jos npm -v sitten kaiu "NPM läsnä järjestelmässä" muuten sudo apt install npm fi

Yllä olevassa esimerkissä, koska npm ei asennettu järjestelmään, komento npm -v palautti ei-nolla-tilan. Siksi koodin suoritus meni muu lohko, johon asennamme npm käyttämällä apt paketin hallinta. Kuten näemme, se kehotti minua antamaan salasanan ja aloitti npm:n asennuksen.

Voimme myös pestä toisen tai muuten lohko sisällä jos, muu tai elif lohko:

x=0 y=1 jos [ $x -eq 0 ] niin kaiku "X on 0" jos [ $y -eq 1 ] sitten kaiku "Y on 1" muuten kaiku "Y ei ole 1" fi else echo "X on ei 0" fi

Tämä on hyödyllistä, kun erillinen ehtojoukko on tarkistettava, kun alkuehto on täytetty.

Esimerkiksi seuraava koodi yrittää asentaa verkkopalvelinohjelmiston:

jos nginx -v niin echo "NGINX on jo asennettu." muuten, jos sudo apt install nginx, toista "NGINX-asennus onnistui". elif sudo apt install apache2 sitten echo "APACHE2 asennus onnistui." else echo "Mitään verkkoohjelmistoa ei voi asentaa." fi

Koodi tarkistaa ensin, onko Nginx jo asennettu järjestelmään. Jos on, se vain näyttää viestin ja poistuu. Jos ei, se yrittää asentaa Nginxin.

Jos Nginxiä ei jostain syystä voitu asentaa järjestelmään paketista, se yrittää asentaa Apache2:n. Jos jopa Apache2 antaa virheen asennuksen aikana, se poistuu näyttäen viestin, että ohjelmistoa ei voitu asentaa.

Samalla tavalla sisäkkäistä lohkoa voidaan käyttää sisällä elif myös lohko.

Suoritetaan tai muuten: Skriptit ja komentorivi

Samanlainen kuin mikä tahansa Bash-koodi, tai muuten -lausetta voidaan käyttää Bash-shellissä suoraan tai suoritettavasta komentotulkin komentosarjatiedostosta. Kun Bash-tulkki löytää jos, muu tai elif lauseke, se jatkaa komentotulkkia antaakseen käyttäjän kirjoittaa koodilohkoon.

Käyttäjä voi myös tallentaa tämän koodin komentosarjatiedostoon ja suorittaa komentosarjatiedoston.

The #!/bin/bash alussa määrittää tulkin, jota käytetään, kun tiedosto suoritetaan. Vaikka Bash on yleisimmin käytetty komentotulkki nykyään, jotkut käyttäjät pitävät enemmän zsh:n kaltaisista komentotulkeista, jotka tulisi määrittää bashin tilalle tämän tiedoston alussa.

Anna suoritusoikeudet tälle tiedostolle suorittamalla:

chmod +x test.sh

Suorita lopuksi tiedosto suorittamalla:

./test.sh

Johtopäätös

Kuten mikä tahansa ohjelmointikieli, tai muuten lausunto on Bashin perusominaisuus. Sen käytön oppiminen menee pitkälle niin perus- kuin edistyneiden skriptien kirjoittamisessa.