Bash'i kui muu avaldus: õpetus ja näited

Kui…else lause kasutamine Bashis tingimuskoodi täitmiseks.

Bash (Bourne Again Shell) on GNU/Linuxi operatsioonisüsteemide shell-käsuviip ja skriptikeel. See on enamiku Linuxi distributsioonide vaikekest.

Tingimuslikud laused on igas programmeerimiskeeles üliolulised, nii kompileeritud kui ka skriptitud. Need võimaldavad kasutajal käivitada eelnevalt määratletud tingimusel põhinevat koodijuppi, mis on programmeerimisloogika üks aluseid. Selles artiklis õpime, kuidas kasutada kui...muidu tingimuslause Bashis.

Sissejuhatus

The kui...muidu Bashi avaldus võimaldab kasutajal tingimuste alusel koodivooga manipuleerida. Kasutaja saab määrata eraldi käivitatavad koodiplokid, millest ainult üks käivitatakse lõpuks käitusajal, sõltuvalt täidetud tingimusest.

Pange tähele, et saab määrata rohkem kui kaks tingimust, mille jaoks elif avaldust saab kasutada. Kasutaja saab anda kasutades suvalise arvu tingimusi elifja lõpuks vaiketingimus kasutades muidu blokk. Vaatame selle kohta lähemalt allolevast süntaksist ja näidetest.

Üldine süntaks

Üldine süntaks jaoks kui...muidu avaldus Bashis on:

kui siis  muidu  fi

Siin, kui rahuldab, st kui see tagastab 0 (success), siis käivitatakse koodiplokk 1. Kui tingimus ei tagasta 0, st tagastab tõrkeoleku, siis käivitatakse koodiplokk 2. The kui...muidu plokk lõpeb tähega a fi avaldus.

Mitme ploki puhul, mis vastavad mitmele tingimusele,elif kasutatakse:

kui siis  elif siis  elif siis  ... ... muidu  fi

Siin kontrollitakse tingimusi järjekorras ja käivitatakse esimese tingimuse koodiplokk, mis tagastab oleku 0 (edukus). Nt. kui tagastab nullist erineva oleku (tõrge), siis on kontrollitud. Kui tagastab oleku 0, hukatakse. Pärast seda edasisi tingimusi ei kontrollita ja koodi täitmine jätkub pärast koodi täitmist fi avaldus.

Kui ükski tingimus ei anna olekut 0, muus plokis täidetakse. Pange tähele, et muu plokk on valikuline. Kui ükski tingimus pole täidetud, samuti ei muidu plokk on määratud, tingimusliku koodiplokki ei käivitata ja koodi täitmine jätkub pärast koodi täitmist fi avaldus, nagu on näidatud alloleval voograafikul.

Pange tähele, et siis lauset tuleb kasutada alles pärast kui ja elif avaldused ja pole nõutavad pärast muidu avaldus.

Näited

Koodiploki täitmiseks kui muutujal on konkreetne väärtus:

x=0 kui [ $x -eq 0 ] siis kaja "X väärtus on 0" muidu kaja "X väärtus ei ole 0" fi

Mitme väärtuse kontrollimiseks tehke järgmist.

x=2 kui [ $x -eq 0 ] siis kaja "Väärtus X on 0" elif [ $x -eq 1 ] siis kaja "Väärtus X on 1" elif [ $x -eq 2 ] siis kaja "Väärtus X on 2" muidu kaja "X väärtus ei ole 0" fi

Tingimusteks võivad olla mis tahes Linuxi käsud. Vastav koodiplokk käivitub, kui käsk töötab edukalt.

kui npm -v, siis kaja "süsteemis olemasolev NPM" muidu sudo apt install npm fi

Ülaltoodud näites alates npm ei olnud süsteemi installitud, käsk npm -v tagastas nullist erineva oleku. Seega läks koodi täitmine sisse muidu plokk, kuhu installime npm kasutades asjakohane paketihaldur. Nagu näeme, palus see mul sisestada parool ja alustas npm installimist.

Võime ka teise pesa panna kui...muidu plokk an kui, muidu või elif plokk:

x=0 y=1 kui [ $x -eq 0 ] siis kaja "X on 0" kui [ $y -eq 1 ] siis kaja "Y on 1" muidu kaja "Y ei ole 1" fi else kaja "X on mitte 0"fi

See on kasulik, kui esialgse tingimuse täitmist tuleb kontrollida eraldi tingimuste komplekti.

Näiteks proovib järgmine kood installida veebiserveri tarkvara:

kui nginx -v, siis kaja "NGINX on juba installitud." muidu, kui sudo apt install nginx, siis korda "NGINX installimine õnnestus". elif sudo apt install apache2, seejärel korda "APACHE2 installimine õnnestus". else echo "Ei saa installida ühtegi veebitarkvara." fi

Kood kontrollib esmalt, kas Nginx on juba süsteemi installitud. Kui on, kuvab see lihtsalt teate ja väljub. Kui see pole nii, proovib see installida Nginxi.

Kui mingil põhjusel ei saanud Nginxi paketist süsteemi installida, proovib see installida Apache2. Kui isegi Apache2 annab installimisel vea, kuvatakse teade, et tarkvara ei saa installida.

Sarnasel viisil saab pesastatud plokki kasutada ka sees elif plokk samuti.

Täitmine kui...muidu: skriptid ja käsurida

Sarnaselt mis tahes Bashi koodiga, kui...muidu lauset saab kasutada Bash shellis otse või käivitatavast shelliskriptifailist. Kui Bashi tõlk leiab kui, muidu või elif lause, jätkab see kesta, et lubada kasutajal koodiplokki siseneda.

Kasutaja saab selle koodi ka skriptifaili salvestada ja skriptifaili käivitada.

The #!/bin/bash alguses määrab tõlgi, mida faili käivitamisel kasutatakse. Kuigi Bash on tänapäeval kõige sagedamini kasutatav kest, eelistavad mõned kasutajad selliseid kestasid nagu zsh, mis tuleks selle faili alguses määrata bashi asemel.

Sellele failile täitmisõiguste andmiseks käivitage:

chmod +x test.sh

Lõpuks käivitage faili käivitamiseks:

./test.sh

Järeldus

Sarnaselt mis tahes programmeerimiskeelega, kui...muidu avaldus on Bashi põhiomadus. Selle kasutamise õppimine aitab nii põhi- kui ka täiustatud skriptide kirjutamisel palju teha.