Sådan bruges Bash -sagens erklæring

How Use Bash Case Statement



Bash case-udsagn ligner udsagn fra if-else, men er lettere og enklere. Det hjælper med at matche en variabel mod flere værdier. Det bruges, når du har brug for IF-else-sætningerne med et antal Elif-sætninger ... Det ligner ganske meget at skifte sætning i C, men bash case-sætningen bevæger sig ikke fremad, når mønsteret er matchet

I denne artikel vil vi forklare, hvordan du bruger Bash -sagserklæringen med eksempel i Linux OS.







Syntaks for bash case statement

Her er syntaksen for bash case statement:



Syntaks:



sag $ variabel i
mønster-1)
kommandoer
;;
mønster-2)
kommandoer
;;
mønster-3)
kommandoer
;;
mønster-N)
kommandoer
;;
*)
kommandoer
;;
esac
  • Sagserklæringen starter med sag og slutter med esac
  • ) Bruges til at afslutte et mønster. For at adskille flere mønstre, | operatør bruges som vist herunder:
sag $ variabel i
mønster-1|mønster-2)
kommandoer
....
....
;;
mønster-3|mønster-4)
kommandoer
....
....
;;
  • Mønster med kommandoer er kendt som klausul, og hver klausul slutter med (;;).
  • Stjernetegnet* kan bruges til at definere standardtilfældet.
  • Bash case statement matcher først input $ variablen med de forskellige mønstre. Hvis et mønster matches, udføres det tilsvarende sæt kommandoer op til de dobbelte semikolon (;;).

Eksempel 1:

Følgende eksempel handler om bash -kontoudtog, hvor det beder brugeren om at indtaste månedsnavnet. Hvis denne input matcher de definerede mønstre i scriptet, udføres den tilsvarende ekkokommando. Ekkokommandoen viser oplysninger om den internationale begivenhed i den pågældende måned.





For at bruge dette script skal du oprette en enkel tekstfil; navngiv det med .sh filtypen. Tilføj følgende script i det, og gem det. Tildel derefter denne fil til at udføre tilladelser ved at køre følgende kommando i Terminal:

$sudo chmod 777filnavn.sh

For at udføre denne bash -fil skal du blot køre ./ efterfulgt af bash -filnavnet som følger:



$./filnavn.sh

Når du udfører scriptet, bliver du bedt om at indtaste månedens navn som input. Hvis månedsnavnet matches, viser det den tilsvarende begivenhed i den pågældende måned, ellers vises ingen matchende oplysninger.

Bemærk, at shopt -s nocasematch bruges til at matche mønster uanset sag.

butikker -snocasematch

smed ud 'Indtast månedens navn'
Læsmåned
sag $ måned i
januar)
smed ud '24. januar internationale uddannelsesdag.'
;;
februar)
smed ud '20. februar Verdensdag for social retfærdighed.'
;;
marts)
smed ud '8. marts Internationale kvindedag.'
;;
April)
smed ud '7. april Verdenssundhedsdagen'
;;
Kan)
smed ud 'Den 15. maj internationale familiedag'
;;
juni)
smed ud '20. juni Verdens flygtningedag'
;;
juli)
smed ud '11. juli verdens befolkningsdag'
;;
*)
smed ud 'Ingen matchende oplysninger fundet'
;;
esac

Eksempel 2:

Følgende eksempel handler om bash -kontoudskriften, hvor en bruger bliver bedt om at indtaste landets navn. Hvis denne input matcher de definerede mønstre i scriptet, udføres den tilsvarende ekkokommando. Ekkokommandoen viser oplysninger om hovedstaden i det pågældende land.

For at bruge dette script skal du følge den samme metode som beskrevet i ovenstående eksempel. Når det er gjort, skal du udføre scriptet, og du bliver bedt om at indtaste navnet på landet som input. Hvis landets navn matches med de foruddefinerede landnavne, viser det hovedstadenavnet i dette land, ellers vises meddelelsen Information ikke tilgængelig.

#!/bin/bash
butikker -snocasematch
smed ud -n 'Indtast navnet på et land:'
LæsLand

smed ud -n 'Hovedstaden i$ lander '
sag $ land i
Pakistan)
smed ud -n 'Islamabad'
;;
Fiji)
smed ud -n 'Tør'
;;
Storbritannien| 'Det Forenede Kongerige')
smed ud -n 'London'
;;
Kalkun)
smed ud -n 'Ankara'
;;
BRUG)
smed ud -n 'Washington DC'
;;
*)
smed ud -n 'Information ikke tilgængelig'
;;
esac
smed ud ''

Bash case-udsagn gør bash-script lettere at læse og forstå. I denne artikel har vi dækket, hvordan man skriver og bruger bash case -udsagn. Nu kan du let og enkelt skrive en slags multilevel if-else-erklæring ved hjælp af case-udsagn.