Šioje temoje aptarsime atvejo teiginių pagrindus ir kaip juos naudoti Bash scenarijuose.
Bash didžiojo atvejo teiginys yra paprasčiausia IF-THEN-ELSE forma su daugybe ELIF elementų. Naudojant atvejo teiginį, mūsų bash scenarijus tampa lengviau skaitomas ir lengviau prižiūrimas. Paprastai jie taikomi siekiant supaprastinti sudėtingas sąlygas, turinčias daug skirtingų pasirinkimų.
„Bash“ didžiųjų raidžių sakinys vadovaujasi panašia logika kaip „Javascript“ arba „C switch“ sakinys. Yra nedidelis skirtumas:
- „Bash“ atvejo teiginys paima reikšmę vieną kartą ir patikrina tą reikšmę kelis kartus. Jis nustoja ieškoti šablono, kai jį suranda ir įvykdo su juo susietą sakinį, o tai yra beveik priešinga C jungiklio sakinio atveju.
Atvejo aprašymo sintaksė
Bash didžiųjų ir mažųjų raidžių teiginio sintaksė pateikta toliau:
case expression in pattern_1) statements ;; pattern_2) statements ;; pattern_3|pattern_4|pattern_5) statements ;; pattern-n) statements ;; *) statements ;; esac
Yra keletas pagrindinių „bash“ atvejų teiginių:
- Kiekvienas atvejo sakinys bash prasideda raktiniu žodžiu „case“, po kurio eina raidžių išraiška ir „in“ raktinis žodis. Atvejo pareiškimas uždaromas raktiniu žodžiu „esac“.
- Galime taikyti kelis modelius, atskirtus | operatorius. Operatorius ) nurodo šablonų sąrašo pabaigą.
- Šablonas, kuriame yra teiginių, vadinamas sakiniu ir turi būti baigtas dvigubu kabliataškiu (;;).
- Žvaigždutės simbolis (*) naudojamas kaip galutinis šablonas numatytiesiems didžiosioms raidėms apibrėžti. Jis naudojamas kaip numatytasis atvejis, kai naudojamas kaip paskutinis atvejis.
Kaip tai veikia
Visų pirma, atvejo teiginys išplečia išraišką ir bando atitikti kiekvieną įtrauktą šabloną. Kai randa atitiktį, visi susieti teiginiai vykdomi iki dvigubo kabliataškio (;;). Po pirmosios atitikties atvejis baigiasi paskutinio įvykdyto sakinio išėjimo būsena.
Jei nėra suderinto modelio, atvejo išėjimo būsena yra lygi nuliui. Kitu atveju grąžinimo būsena yra įvykdytų teiginių išėjimo būsena.
Jei naudojamas numatytasis žvaigždučių šablonas, jis bus vykdomas, jei nebus suderinto šablono.
Pabandykime suprasti šį mechanizmą naudodamiesi keliais pavyzdžiais:
1 pavyzdys
Šiame pavyzdyje apibrėžėme paprastą scenarijų, kad parodytume atvejo teiginio naudojimą.
Bash scenarijus
#!/bin/bash echo 'Do you know Java Programming?' read -p 'Yes/No? :' Answer case $Answer in Yes|yes|y|Y) echo 'That's amazing.' echo ;; No|no|N|n) echo 'It's easy. Let's start learning from javatpoint.' ;; esac
Išvestis
2 pavyzdys
Šiame pavyzdyje apibrėžėme kombinuotą scenarijų, kai taip pat yra numatytasis atvejis, kai nerasta ankstesnio atitikusio atvejo.
konvertuoti int į java eilutę
Bash scenarijus
#!/bin/bash echo 'Which Operating System are you using?' echo 'Windows, Android, Chrome, Linux, Others?' read -p 'Type your OS Name:' OS case $OS in Windows|windows) echo 'That's common. You should try something new.' echo ;; Android|android) echo 'This is my favorite. It has lots of applications.' echo ;; Chrome|chrome) echo 'Cool!!! It's for pro users. Amazing Choice.' echo ;; Linux|linux) echo 'You might be serious about security!!' echo ;; *) echo 'Sounds interesting. I will try that.' echo ;; esac
Išvestis
Mes paleidome scenarijų su trimis skirtingais įėjimais, patikrinkite toliau pateiktą išvestį: