Kuinka luoda yksinkertaisia Shell-komentosarjoja Linuxissa
Shell-komentosarjojen luominen on yksi tärkeimmistä taidoista, jotka Linux-käyttäjillä pitäisi olla sormenpäässä. Shell-skripteillä on valtava rooli toistuvien tehtävien automatisoinnissa, jotka muuten olisivat tylsiä suorittamaan rivi riviltä.
Tässä opetusohjelmassa korostamme joitain komentosarjan komentosarjojen perustoimintoja, jotka jokaisella Linux-käyttäjällä pitäisi olla.
1. Luo yksinkertainen Shell-komentosarja
Shell-komentosarja on tiedosto, joka sisältää ASCII-tekstin. Aloitamme luomalla yksinkertaisen shell-komentosarjan ja tekemään tämän varten tekstieditorin. Vim-editoria on melko paljon.
Aloitamme luomalla yksinkertaisen komentosarjan, joka näyttää "Hello world", kun se suoritetaan.
$ vim hello.sh
Liitä seuraava sisältö tiedostoon ja tallenna.
#!/bin/bash # Print Hello world message echo "Hello World!"
Mennään komentosarjan komentoriviltä rivikohtaisesti.
- Ensimmäinen rivi -
#!/bin/bash
- tunnetaan nimellä shebang-otsikko. Tämä on erityinen rakenne, joka osoittaa, mitä ohjelmaa käytetään komentosarjan tulkintaan. Tässä tapauksessa tämä on bash-kuori, jonka osoittaa/bin/bash. On olemassa muita komentosarjakieliä, kuten Python, jota merkitään#!/Usr/bin/python3
ja Perl, jonka shebang-otsikko on, on merkitty#!/Usr/bin/perl
. - Toinen rivi on kommentti. Kommentti on lause, joka kuvaa mitä komentosarjakomentosarja tekee ja jota ei suoriteta, kun komentosarja suoritetaan. Kommentteja edeltää aina hash-merkki
#
. - Viimeinen rivi on komento, joka tulostaa "Hello World" -sanoman päätelaitteeseen.
Seuraava vaihe on tehdä komentosarja suoritettavaksi määrittämällä suorituslupa käyttämällä chmod-komentoa kuvan mukaisesti.
$ chmod +x hello.sh
Suorita lopuksi shell-komentosarja käyttämällä kumpaakin komentoa:
$ bash hello.sh OR $ ./hello.sh
2. Ehdollisten lauseiden käyttäminen koodin suorittamiseen
Muiden ohjelmointikielien tapaan ehdollisia lauseita käytetään bash-komentosarjassa päätöksenteossa, syntaksissa on vain pieni vaihtelu. Aiomme käsitellä if, if-else ja elif ehdollisia lausuntoja.
If-käskyä voidaan käyttää yhden tai useamman ehdon testaamiseen. Aloitamme if-lauseen perustavanlaatuisesta käytöstä yhden ehdon testaamiseksi. If-käskyn määrittävät if ... fi
-lohkot.
if command then statement fi
Katsotaanpa alla olevaa komentotulkkikomentoa.
#!/bin/bash echo 'Enter the score' read x if [[ $x == 70 ]]; then echo 'Good job!' fi
Yllä oleva komentotiedosto kehottaa käyttäjää antamaan pisteet, jotka sitten tallennetaan muuttujaan x. Jos pisteet vastaavat 70, komentosarja palauttaa tuloksen ”Hyvä työ!”. Vertailuoperaattoria ==
käytetään testaamaan, vastaako syötetty piste, joka on tallennettu muuttujaan x, 100.
Muita vertailuoperaattoreita, joita voit käyttää, ovat:
-
-eq
- yhtä suuri kuin -
-ne
- Ei ole yhtä suuri kuin -
-lt
- alle -
-le
- pienempi tai yhtä suuri kuin -
-lt
- alle -
-ge
- suurempi tai yhtä suuri kuin
Esimerkiksi alla oleva if-lauseen lohko tulostaa ”Työskentele kovemmin”, jos tulopisteen arvo on alle 50.
if [[ $x -lt 50 ]]; then echo 'Work Harder!' fi
Tilanteissa, joissa sinulla on 2 mahdollista tulosta: - onko tämä vai toinen - if-else-lause on kätevä.
if command then statement1 else statement2 fi
Alla oleva komentosarja lukee syötepisteet ja tarkistaa, onko se suurempi tai yhtä suuri kuin 70.
Jos pistemäärä on suurempi tai yhtä suuri kuin 70, saat viestin ”Hyvä työ, läpäisit!”. Jos pisteet kuitenkin laskevat alle 70, tulos ”Epäonnistut” tulostetaan.
#!/bin/bash echo 'Enter the score' read x if [[ $x -ge 70 ]]; then echo 'Great job, You passed!' else echo 'You failed' fi
Skenaarioissa, joissa on useita ehtoja ja erilaiset tulokset, käytetään if-elif-else-käskyä. Tämä lausunto on seuraavassa muodossa.
if condition1 then statement1 elif condition2 then statement2 else statement3 fi
Meillä on esimerkiksi skripti arpajaisia varten, joka tarkistaa, onko syötetty numero 90, 60 tai 30.
#!/bin/bash echo 'Enter the score' read x if [[ $x -eq 90 ]]; then echo “You have won the First Prize” elif [[ $x -eq 60 ]]; then echo “You have won the Second Prize” elif [[ $x -eq 30 ]]; then echo “You have won the Second Prize” else echo “Please try again” fi
3. If-lauseen käyttäminen AND-logiikan kanssa
Voit käyttää if-käskyä AND-logiikkaoperaattorin vieressä tehtävän suorittamiseen, jos kaksi ehtoa täyttyy. Operaattoria &&
käytetään AND-logiikan merkitsemiseen.
#!/bin/bash echo 'Please Enter your user_id' read user_id echo 'Please Enter your tag_no' read tag_id if [[ ($user_id == “tecmint” && $tag_id -eq 3990) ]]; then echo “Login successful” else echo “Login failure” fi
5. If-lauseen käyttö OR-logiikan kanssa
Kun käytetään OR-logiikkaa, jota edustaa symboli ||
, jommankumman ehdoista on täytettävä komentosarjalla odotettujen tulosten aikaansaamiseksi.
#!/bin/bash echo 'Please enter a random number' read number if [[ (number -eq 55 || number -eq 80) ]]; then echo 'Congratulations! You’ve won' else echo 'Sorry, try again' fi
Käytä silmukkarakenteita
Bash-silmukoiden avulla käyttäjät voivat suorittaa useita tehtäviä, kunnes saavutetaan tietty tulos. Tämä on kätevää toistuvien tehtävien suorittamisessa. Tässä osiossa käymme läpi joitain silmukoita, jotka löydät myös muilta ohjelmointikieliltä.
Tämä on yksi helpoimmista silmukoista työskennellä. Syntaksi on melko yksinkertainen:
while <some test> do commands done
Alla oleva while-silmukka listaa kaikki numerot 1-10 suoritettaessa.
#!/bin/bash # A simple while loop counter=1 while [ $counter -le 10 ] do echo $counter ((counter++)) done
Selvitetään while-silmukka:
Muuttujan laskuri alustetaan arvoon 1. Ja vaikka muuttuja on pienempi tai yhtä suuri kuin 10, laskurin arvoa lisätään, kunnes ehto täyttyy. Linja echo $laskuri tulostaa kaikki numerot 1-10.
Kuten while-silmukan tapaan, for for -silmukkaa käytetään koodin suorittamiseen iteratiivisesti. Eli. toista koodin suoritus niin monta kertaa kuin käyttäjä on määrittänyt.
Syntaksi on:
for var in 1 2 3 4 5 N do command1 command2 done
Alla oleva for-silmukka iteroituu 1: stä 10: een ja käsittelee arvot näytöllä.
Parempi tapa saavuttaa tämä on määritellä alue käyttämällä kaksinkertaisia kiharoita aaltosulkeita {}
kuvan mukaisesti kaikkien numeroiden kirjoittamisen sijaan.
#!/bin/bash # Specify range in a for loop for num in {1..10} do echo $num done
Bash-sijaintiparametrit
Sijaintiparametri on erityinen muuttuja, johon viitataan komentosarjassa, kun arvot välitetään kuorelle, mutta sitä ei voida määrittää. Paikallisparametrit vaihtelevat välillä $0 $1 $2 $3 …… - $9. 9 dollarin arvon ylittävän parametrin on oltava suljettuina sulkeissa, esim. & # 36 {10}, & # 36 {11} ... ja niin edelleen.
Komentosarjaa suoritettaessa ensimmäinen sijaintiparametri, joka on $0, ottaa komentosarjan nimen. Parametri $1 vie ensimmäisen muuttujan, joka välitetään päätelaitteelle, $2 ottaa toisen, $3 kolmannen ja niin edelleen.
Luodaan komentosarja test.sh kuvan mukaisesti.
#!/bin/bash echo "The name of the script is: " $0 echo "My first name is: " $1 echo "My second name is: " $2
Suorita seuraavaksi komentosarja ja anna argumentiksi etu- ja toinen nimi:
# bash test.sh James Kiarie
Tuloksesta voimme nähdä, että ensimmäinen tulostettu muuttuja on shell-komentosarjan nimi, tässä tapauksessa test.sh. Sen jälkeen nimet tulostetaan kuoriskriptissä määriteltyjen sijaintiparametrien mukaisesti.
Paikkaparametrit ovat hyödyllisiä siinä mielessä, että ne auttavat sinua mukauttamaan syötettäviä tietoja sen sijaan, että määritettäisiin nimenomaisesti muuttujalle arvo.
Shell-komentojen poistumiskoodit
Aloitetaan vastaamalla yksinkertaiseen kysymykseen, mikä on poistumiskoodi?
Jokaisella käyttäjän tai komentosarjan komentosarjan suorittamalla komennolla on poistumistila. Poistumistila on kokonaisluku.
Poistumistila 0 tarkoittaa, että komento suoritetaan onnistuneesti ilman virheitä. Kaikki väliltä 1–255 osoittaa, että komento epäonnistui tai ei onnistunut.
Voit löytää komennon poistumistilan käyttämällä $?
Shell-muuttujaa.
1-poistumistila osoittaa yleisen virheen tai mahdolliset virheet, kuten tiedostojen muokkaamisen ilman sudo-oikeuksia.
2-poistumistila osoittaa komennon tai sisäänrakennetun kuorimuuttujan väärän käytön.
127 poistumistila osoittaa laitonta komentoa, joka yleensä aiheuttaa 'komentoa ei löydy' -virheen.
Shell-komentojen tulostuksen käsitteleminen komentosarjassa
Bash-komentosarjoissa voit tallentaa komennon lähdön muuttujaan tulevaa käyttöä varten. Tätä kutsutaan myös komentotulkkikomennoksi ja se voidaan saavuttaa seuraavilla tavoilla.
variable=$(command) OR variable=$(/path/to/command) OR variable=$(command argument 1 argument 2 ...)
Voit esimerkiksi tallentaa päivämääräkomennon muuttujaan, jota kutsutaan tänään, ja kutsua shell-komentosarjaa paljastamaan nykyinen päivämäärä.
#!/bin/bash today=$(date) echo “Today is $today”
Otetaan toinen esimerkki. Oletetaan, että haluat löytää kelvolliset kirjautumiskäyttäjät Linux-järjestelmästäsi. Kuinka tekisit sen? Ensinnäkin luettelo kaikista käyttäjistä (sekä järjestelmä-, prosessi- että kirjautumiskäyttäjistä) tallennetaan tiedostoon/etc/passwd.
Jos haluat tarkastella tiedostoa, sinun on käytettävä grep-komentoa etsimällä käyttäjiä/bin/bash-määritteellä ja käyttämällä cut -c 1-10 -komentoa kuvan osoittamalla tavalla, jotta saat näkyviin nimien 10 ensimmäistä merkkiä.
Olemme tallentaneet kissakomennon login_users-muuttujaan.
#!/bin/bash login_users=$(cat /etc/passwd | grep /bin/bash | cut -c 1-10) echo 'This is the list of login users: echo $login_users
Tämä tuo opastuksemme yksinkertaisten komentosarjojen luomisesta loppuun. Toivomme, että pidit tämän arvokkaana.