Tapausselostus in bash-skriptejä käytetään, kun on tehtävä päätös useista valinnoista. Toisin sanoen se on hyödyllistä, kun lausekkeella voi olla useita arvoja. Tämän menetelmän voidaan nähdä korvaavana useita if-lauseita komentosarjassa. Case-lauseilla on etulyöntiasema if-lauseisiin verrattuna, koska se parantaa koodimme luettavuutta ja niitä on helpompi ylläpitää. Bash-komentosarjan tapauslausekkeet ovat melko samanlaisia kuin C-kielen Case-lausekkeet. Mutta toisin kuin C, Bash Case -lause lopettaa haun jatkamisen heti, kun osuma tapahtuu. Yksinkertaisesti sanottuna ne eivät vaadi mitään katkeamislausetta, joka on pakollinen käytettäväksi C:ssä, jotta kuvion etsiminen voidaan lopettaa.
Tapauslausekkeen perussyntaksi on annettu alla,
Syntaksi:
case EXPRESSION in Pattern_Case_1) STATEMENTS ;; Pattern_Case_1) STATEMENTS ;; Pattern_Case_N) STATEMENTS ;; *) STATEMENTS ;; esac>
Näin tapausselvitys toimii:
cpld vs fpga
EXPRESSION>on muuttuja tai arvo, joka arvioidaan eri mallien (tapausten) perusteella vastaavuuden löytämiseksi.- Tapauslauseke alkaa avainsanalla
case>jota seuraaEXPRESSION>arvioitava. - Jokainen tapaus määritellään a
Pattern_Case>joka edustaa tiettyä arvoa tai mallia, jota verrataanEXPRESSION>. - Jokaisen jälkeen
Pattern_Case>, on suoritettava lausekkeita, josEXPRESSION>vastaa tiettyäPattern_Case>. Nämä lausunnot on merkittySTATEMENTS>. - The
;;>jokaisen lopussaSTATEMENTS>lohko osoittaa tapauslohkon loppua. - The
*)>on erikoistapaus, joka tunnetaan oletustapauksena. Jos mikään edellisistä malleista ei vastaaEXPRESSION>,STATEMENTS>alla*)>lohko suoritetaan. - The
esac>avainsana merkitsee tapauslausekkeen loppua.
- Jos kuviota ei löydy, palautustila on nolla. Muussa tapauksessa palautustila on sovitetun mallin tapauksen suoritetun rungon poistumistila.
- Kuten C tarjoaa oletusavainsanan oletuskäskylle, samoin Bash-tapauslauseessa, voimme käyttää jokerimerkkiä tähtimerkkiä (*) ja määrittää lopullisen mallin tapauksen oletuskirjaimen määrittämiseksi.
Esimerkki 1: Tulosta kuvaus jokaiselle vaihtoehdolle
Tässä esimerkissä komentosarjan avulla käyttäjä voi valita osaston ja näyttää syöttöä vastaavan kuvauksen kaikukomennon avulla. Tässä komentosarjassa olemme määrittäneet DEPARTMENT-muuttujan tietojenkäsittelytieteeksi. Näin ollen ensimmäisen mallitapauksen runko suoritetaan.
Voit seurata alla olevia ohjeita:
1. Avaa pääte (Ctrl + Alt + T) ja luo komentosarja:
department.sh>
2. Lisää skriptiin nämä lauseet:
#!/bin/bash DEPARTMENT='Computer Science' echo -n 'Your DEPARTMENT is ' case $DEPARTMENT in 'Computer Science') echo -n 'Computer Science' ;; 'Electrical and Electronics Engineering' | 'Electrical Engineering') echo -n 'Electrical and Electronics Engineering or Electrical Engineering' ;; 'Information Technology' | 'Electronics and Communication') echo -n 'Information Technology or Electronics and Communication' ;; *) echo -n 'Invalid' ;; esac>
3. Jokainen rivi on kuvattu alla:
- Skriptin ensimmäinen rivi alkaa shebangilla (#!).
- Se kehottaa käyttöjärjestelmää käyttämään tiettyä tulkkia komentosarjan jäsentämiseen.
- Olemme alustaneet DEPARTMENT-muuttujan tietotekniikaksi.
- Nyt käytämme tapausselvitystä.
- Jokainen lauseke on käsitelty tapauslausekkeen kautta.
- Viimeistä riviä esac on käytetty tapauslausekkeen päättämiseen.
4. Tallenna komentosarja ja tee siitä suoritettava.
chmod +x department.sh>
5. Suorita komentosarja.
./department.sh>
Lähtö:

Esimerkki 2: Useiden kuvioiden käyttäminen
Jokaisessa lauseessa voimme käyttää useita mallitapauksia. Jos lauseke vastaa vähintään yhtä mallitapausta, lauseen runko suoritetaan. Tässä skriptissä olemme määrittäneet DEPARTMENT-muuttujan nimellä Elektroniikka ja viestintä. Kolmannessa mallitapauksessa on kaksi arvoa, jotka erotetaan putken ( | ) -operaattorilla. Siten kolmannen mallitapauksen runko suoritetaan.
Voit seurata alla olevia ohjeita:
1. Avaa pääte (Ctrl + Alt + T) ja luo komentosarja:
department.sh>
2. Lisää skriptiin nämä lauseet:
#!/bin/bash DEPARTMENT='Electronics and Communication' echo -n 'Your DEPARTMENT is ' case $DEPARTMENT in 'Computer Science') echo -n 'Computer Science' ;; 'Electrical and Electronics Engineering' | 'Electrical Engineering') echo -n 'Electrical and Electronics Engineering or Electrical Engineering' ;; 'Information Technology' | 'Electronics and Communication') echo -n 'Information Technology or Electronics and Communication' ;; *) echo -n 'Invalid' ;; esac>
3. Jokaisesta riveistä on keskusteltu alla:
- Skriptin ensimmäinen rivi alkaa shebangilla (#!).
- Se kehottaa käyttöjärjestelmää käyttämään tiettyä tulkkia komentosarjan jäsentämiseen.
- Olemme alustaneet DEPARTMENT-muuttujan nimellä Electronics and Communication.
- Nyt käytämme tapausselvitystä.
- Jokainen lauseke on käsitelty tapauslausekkeen kautta.
- Viimeistä riviä esac on käytetty tapauslausekkeen päättämiseen.
4. Tallenna komentosarja ja tee siitä suoritettava.
chmod +x department.sh>
5. Suorita komentosarja.
./department.sh>
Lähtö:
Esimerkki 3: silmukoille
Tässä skriptissä olemme määrittäneet luokan kolmen oppilaan osaston taulukossa DEPARTMENT. Toisin sanoen aiomme käsitellä useamman kuin yhden lausekkeen, joka on kuvattu DEPARTMENT-muuttujassa. Useiden lausekkeiden iteroimiseksi voimme käyttää a for silmukkaa.
Voit seurata alla olevia ohjeita:
1. Avaa pääte (Ctrl + Alt + T) ja luo komentosarja:
department.sh>
2. Lisää skriptiin nämä lauseet:
#!/bin/bash DEPARTMENT=('Electronics and Communication' 'Computer Science' 'Information Technology') for value in '${DEPARTMENT[@]}' do case $value in 'Computer Science') echo -n 'Computer Science ' ;; 'Electrical and Electronics Engineering' | 'Electrical Engineering') echo -n 'Electrical and Electronics Engineering or Electrical Engineering ' ;; 'Information Technology' | 'Electronics and Communication') echo -n 'Information Technology or Electronics and Communication ' ;; *) echo -n 'Invalid ' ;; esac done> 3. Jokainen rivi on kuvattu alla:
- Skriptin ensimmäinen rivi alkaa shebangilla (#!).
- Se kehottaa käyttöjärjestelmää käyttämään tiettyä tulkkia komentosarjan jäsentämiseen.
- Olemme alustaneet taulukon DEPARTMENT kolmella merkkijonoliteraalilla.
- Nyt, for-silmukan avulla, iteroimme elementtijoukon yli.
- Jokainen lauseke on käsitelty tapauslausekkeen kautta.
- Viimeistä riviä esac on käytetty tapauslausekkeen päättämiseen.
4. Tallenna komentosarja ja tee siitä suoritettava.
chmod +x department.sh>
5. Suorita komentosarja.
./department.sh>
Lähtö:

Esimerkki 4: Kysy käyttäjältä Kyllä tai Ei
Voit seurata alla olevia ohjeita:
1. Avaa pääte (Ctrl + Alt + T) ja luo komentosarja:
department.sh>
2. Lisää skriptiin nämä lauseet:
#!/bin/bash echo -n 'Are you a student? [yes or no]: ' read response case $response in 'Y' | 'y' | 'YES' | 'Yes' | 'yes') echo -n 'Yes, I am a student.' ;; 'N' | 'n' | 'No' | 'NO' | 'no' | 'nO') echo -n 'No, I am not a student.'; ;; *) echo -n 'Invalid input' ;; esac>
3. Jokainen rivi on selitetty alla:
- Skriptin ensimmäinen rivi alkaa shebangilla (#!).
- Se kehottaa käyttöjärjestelmää käyttämään tiettyä tulkkia komentosarjan jäsentämiseen.
- Käyttäjältä kysytään Oletko opiskelija? [kyllä vai ei].
- Nyt käyttäjä antaa vastauksen näppäimistön kautta.
- Vastauksen tulos on käsitelty tapauslausunnon kautta.
- Viimeistä riviä esac on käytetty tapauslausekkeen päättämiseen.
4. Tallenna komentosarja ja tee siitä suoritettava.
chmod +x department.sh>
5. Suorita komentosarja alla olevan komennon avulla.
mikä on gb
./department.sh>
Lähtö:

Esimerkki 5: Signaalin lähettäminen prosessiin
Voit seurata alla olevia ohjeita:
1. Avaa pääte (Ctrl + Alt + T) ja luo komentosarja:
signals.sh>
2. Lisää skriptiin nämä lauseet:
#!/bin/bash if [ $# -lt 2 ] then echo 'Usage :Tapausselostus in bash-skriptejä käytetään, kun on tehtävä päätös useista valinnoista. Toisin sanoen se on hyödyllistä, kun lausekkeella voi olla useita arvoja. Tämän menetelmän voidaan nähdä korvaavana useita if-lauseita komentosarjassa. Case-lauseilla on etulyöntiasema if-lauseisiin verrattuna, koska se parantaa koodimme luettavuutta ja niitä on helpompi ylläpitää. Bash-komentosarjan tapauslausekkeet ovat melko samanlaisia kuin C-kielen Case-lausekkeet. Mutta toisin kuin C, Bash Case -lause lopettaa haun jatkamisen heti, kun osuma tapahtuu. Yksinkertaisesti sanottuna ne eivät vaadi mitään katkeamislausetta, joka on pakollinen käytettäväksi C:ssä, jotta kuvion etsiminen voidaan lopettaa.
Tapauslausekkeen perussyntaksi on annettu alla,
Syntaksi:
case EXPRESSION in Pattern_Case_1) STATEMENTS ;; Pattern_Case_1) STATEMENTS ;; Pattern_Case_N) STATEMENTS ;; *) STATEMENTS ;; esac>Näin tapausselvitys toimii:
EXPRESSION>on muuttuja tai arvo, joka arvioidaan eri mallien (tapausten) perusteella vastaavuuden löytämiseksi.- Tapauslauseke alkaa avainsanalla
case>jota seuraaEXPRESSION>arvioitava.- Jokainen tapaus määritellään a
Pattern_Case>joka edustaa tiettyä arvoa tai mallia, jota verrataanEXPRESSION>.- Jokaisen jälkeen
Pattern_Case>, on suoritettava lausekkeita, josEXPRESSION>vastaa tiettyäPattern_Case>. Nämä lausunnot on merkittySTATEMENTS>.- The
;;>jokaisen lopussaSTATEMENTS>lohko osoittaa tapauslohkon loppua.- The
*)>on erikoistapaus, joka tunnetaan oletustapauksena. Jos mikään edellisistä malleista ei vastaaEXPRESSION>,STATEMENTS>alla*)>lohko suoritetaan.- The
esac>avainsana merkitsee tapauslausekkeen loppua.
- Jos kuviota ei löydy, palautustila on nolla. Muussa tapauksessa palautustila on sovitetun mallin tapauksen suoritetun rungon poistumistila.
- Kuten C tarjoaa oletusavainsanan oletuskäskylle, samoin Bash-tapauslauseessa, voimme käyttää jokerimerkkiä tähtimerkkiä (*) ja määrittää lopullisen mallin tapauksen oletuskirjaimen määrittämiseksi.
Esimerkki 1: Tulosta kuvaus jokaiselle vaihtoehdolle
Tässä esimerkissä komentosarjan avulla käyttäjä voi valita osaston ja näyttää syöttöä vastaavan kuvauksen kaikukomennon avulla. Tässä komentosarjassa olemme määrittäneet DEPARTMENT-muuttujan tietojenkäsittelytieteeksi. Näin ollen ensimmäisen mallitapauksen runko suoritetaan.
Voit seurata alla olevia ohjeita:
1. Avaa pääte (Ctrl + Alt + T) ja luo komentosarja:
department.sh>2. Lisää skriptiin nämä lauseet:
#!/bin/bash DEPARTMENT='Computer Science' echo -n 'Your DEPARTMENT is ' case $DEPARTMENT in 'Computer Science') echo -n 'Computer Science' ;; 'Electrical and Electronics Engineering' | 'Electrical Engineering') echo -n 'Electrical and Electronics Engineering or Electrical Engineering' ;; 'Information Technology' | 'Electronics and Communication') echo -n 'Information Technology or Electronics and Communication' ;; *) echo -n 'Invalid' ;; esac>3. Jokainen rivi on kuvattu alla:
- Skriptin ensimmäinen rivi alkaa shebangilla (#!).
- Se kehottaa käyttöjärjestelmää käyttämään tiettyä tulkkia komentosarjan jäsentämiseen.
- Olemme alustaneet DEPARTMENT-muuttujan tietotekniikaksi.
- Nyt käytämme tapausselvitystä.
- Jokainen lauseke on käsitelty tapauslausekkeen kautta.
- Viimeistä riviä esac on käytetty tapauslausekkeen päättämiseen.
4. Tallenna komentosarja ja tee siitä suoritettava.
chmod +x department.sh>5. Suorita komentosarja.
./department.sh>Lähtö:
Esimerkki 2: Useiden kuvioiden käyttäminen
Jokaisessa lauseessa voimme käyttää useita mallitapauksia. Jos lauseke vastaa vähintään yhtä mallitapausta, lauseen runko suoritetaan. Tässä skriptissä olemme määrittäneet DEPARTMENT-muuttujan nimellä Elektroniikka ja viestintä. Kolmannessa mallitapauksessa on kaksi arvoa, jotka erotetaan putken ( | ) -operaattorilla. Siten kolmannen mallitapauksen runko suoritetaan.
Voit seurata alla olevia ohjeita:
1. Avaa pääte (Ctrl + Alt + T) ja luo komentosarja:
department.sh>2. Lisää skriptiin nämä lauseet:
#!/bin/bash DEPARTMENT='Electronics and Communication' echo -n 'Your DEPARTMENT is ' case $DEPARTMENT in 'Computer Science') echo -n 'Computer Science' ;; 'Electrical and Electronics Engineering' | 'Electrical Engineering') echo -n 'Electrical and Electronics Engineering or Electrical Engineering' ;; 'Information Technology' | 'Electronics and Communication') echo -n 'Information Technology or Electronics and Communication' ;; *) echo -n 'Invalid' ;; esac>3. Jokaisesta riveistä on keskusteltu alla:
- Skriptin ensimmäinen rivi alkaa shebangilla (#!).
- Se kehottaa käyttöjärjestelmää käyttämään tiettyä tulkkia komentosarjan jäsentämiseen.
- Olemme alustaneet DEPARTMENT-muuttujan nimellä Electronics and Communication.
- Nyt käytämme tapausselvitystä.
- Jokainen lauseke on käsitelty tapauslausekkeen kautta.
- Viimeistä riviä esac on käytetty tapauslausekkeen päättämiseen.
4. Tallenna komentosarja ja tee siitä suoritettava.
chmod +x department.sh>5. Suorita komentosarja.
./department.sh>Lähtö:
Esimerkki 3: silmukoille
Tässä skriptissä olemme määrittäneet luokan kolmen oppilaan osaston taulukossa DEPARTMENT. Toisin sanoen aiomme käsitellä useamman kuin yhden lausekkeen, joka on kuvattu DEPARTMENT-muuttujassa. Useiden lausekkeiden iteroimiseksi voimme käyttää a for silmukkaa.
Voit seurata alla olevia ohjeita:
1. Avaa pääte (Ctrl + Alt + T) ja luo komentosarja:
department.sh>2. Lisää skriptiin nämä lauseet:
#!/bin/bash DEPARTMENT=('Electronics and Communication' 'Computer Science' 'Information Technology') for value in '${DEPARTMENT[@]}' do case $value in 'Computer Science') echo -n 'Computer Science ' ;; 'Electrical and Electronics Engineering' | 'Electrical Engineering') echo -n 'Electrical and Electronics Engineering or Electrical Engineering ' ;; 'Information Technology' | 'Electronics and Communication') echo -n 'Information Technology or Electronics and Communication ' ;; *) echo -n 'Invalid ' ;; esac done>3. Jokainen rivi on kuvattu alla:
- Skriptin ensimmäinen rivi alkaa shebangilla (#!).
- Se kehottaa käyttöjärjestelmää käyttämään tiettyä tulkkia komentosarjan jäsentämiseen.
- Olemme alustaneet taulukon DEPARTMENT kolmella merkkijonoliteraalilla.
- Nyt, for-silmukan avulla, iteroimme elementtijoukon yli.
- Jokainen lauseke on käsitelty tapauslausekkeen kautta.
- Viimeistä riviä esac on käytetty tapauslausekkeen päättämiseen.
4. Tallenna komentosarja ja tee siitä suoritettava.
chmod +x department.sh>5. Suorita komentosarja.
./department.sh>Lähtö:
Esimerkki 4: Kysy käyttäjältä Kyllä tai Ei
Voit seurata alla olevia ohjeita:
1. Avaa pääte (Ctrl + Alt + T) ja luo komentosarja:
department.sh>2. Lisää skriptiin nämä lauseet:
#!/bin/bash echo -n 'Are you a student? [yes or no]: ' read response case $response in 'Y' | 'y' | 'YES' | 'Yes' | 'yes') echo -n 'Yes, I am a student.' ;; 'N' | 'n' | 'No' | 'NO' | 'no' | 'nO') echo -n 'No, I am not a student.'; ;; *) echo -n 'Invalid input' ;; esac>3. Jokainen rivi on selitetty alla:
- Skriptin ensimmäinen rivi alkaa shebangilla (#!).
- Se kehottaa käyttöjärjestelmää käyttämään tiettyä tulkkia komentosarjan jäsentämiseen.
- Käyttäjältä kysytään Oletko opiskelija? [kyllä vai ei].
- Nyt käyttäjä antaa vastauksen näppäimistön kautta.
- Vastauksen tulos on käsitelty tapauslausunnon kautta.
- Viimeistä riviä esac on käytetty tapauslausekkeen päättämiseen.
4. Tallenna komentosarja ja tee siitä suoritettava.
chmod +x department.sh>5. Suorita komentosarja alla olevan komennon avulla.
./department.sh>Lähtö:
Esimerkki 5: Signaalin lähettäminen prosessiin
Voit seurata alla olevia ohjeita:
1. Avaa pääte (Ctrl + Alt + T) ja luo komentosarja:
signals.sh>2. Lisää skriptiin nämä lauseet:
#!/bin/bash if [ $# -lt 2 ] then echo 'Usage : $0 Signalnumber PID' exit fi # Case statement # Signal number (expression) case '$1' in 1) echo 'Sending SIGHUP signal.....' kill -SIGHUP $2 ;; 2) echo 'Sending SIGINT signal.....' kill -SIGINT $2 ;; 3) echo 'Sending SIGQUIT signal.....' kill -SIGQUIT $2 ;; 4) echo 'Sending SIGKILL signals.....' kill -SIGKILL $2 ;; *) echo 'Signal number $1 has not been processed' ;; esac>3. Jokainen rivi on selitetty alla:
- $1 on signaalin numero ja $2 on prosessin tunnus.
- Käytämme kill-komentoa signaalin välittämiseksi tai lähettämiseksi annetulle prosessitunnukselle.
- Tämä suorittaa nukkumiskomennon muutaman sekunnin ajan.
- Valinnaisen viimeisen vertailun runko *) suoritetaan oletustapauksessa.
4. Tallenna skripti.
5. Suorita komentosarja alla olevan komennon avulla.
./signals.sh>Lähtö:
$ sleep 10000 $ ps -a | grep sleep 23277 pts/2 00:00:00 sleep $ ./signals.sh 9 31231 Sending SIGKILL signal $ sleep 10000 Killed>
Esimerkki 3: silmukoille