Bash skriptēšana — lietas apraksts

Bash skriptēšana — lietas apraksts

Lietas izklāsts bash skriptos tiek izmantots, ja ir jāpieņem lēmums pret vairākām izvēlēm. Citiem vārdiem sakot, tas ir noderīgi, ja izteiksmei var būt vairākas vērtības. Šo metodiku var uzskatīt par vairāku ja-paziņojumu aizstājēju skriptā. Case priekšrakstiem ir priekšrocības salīdzinājumā ar if-paziņojumiem, jo ​​tie uzlabo mūsu koda lasāmību un tos ir vieglāk uzturēt. Case paziņojumi Bash skriptā ir diezgan līdzīgi Case paziņojumiem C valodā. Bet atšķirībā no C, Bash Case paziņojums pārtrauc meklēšanu, tiklīdz notiek atbilstība. Vienkāršiem vārdiem sakot, tiem nav nepieciešams pārtraukuma paziņojums, kas ir obligāti jāizmanto C valodā, lai pārtrauktu modeļa meklēšanu.

Lietas paziņojuma pamata sintakse ir norādīta tālāk,

Sintakse:

case EXPRESSION in Pattern_Case_1) STATEMENTS ;; Pattern_Case_1) STATEMENTS ;; Pattern_Case_N) STATEMENTS ;; *) STATEMENTS ;; esac 

Lūk, kā darbojas lietas apraksts:

  • EXPRESSION> ir mainīgais vai vērtība, kas tiek novērtēta attiecībā pret dažādiem modeļiem (gadījumiem), lai atrastu atbilstību.
  • Gadījuma izklāsts sākas ar atslēgvārdu case> kam seko EXPRESSION> jānovērtē.
  • Katru gadījumu nosaka a Pattern_Case> kas apzīmē noteiktu vērtību vai modeli, kas jāsalīdzina ar EXPRESSION> .
  • Pēc katra Pattern_Case> , ir izpildāmi paziņojumi, ja EXPRESSION> atbilst konkrētajam Pattern_Case> . Šie apgalvojumi ir apzīmēti ar STATEMENTS> .
  • The ;;> katra beigās STATEMENTS> bloks norāda gadījuma bloka beigas.
  • The *)> ir īpašs gadījums, kas pazīstams kā noklusējuma gadījums. Ja neviens no iepriekšējiem modeļiem neatbilst EXPRESSION> , STATEMENTS> saskaņā *)> bloks tiks izpildīts.
  • The esac> atslēgvārds iezīmē lietas paziņojuma beigas.
  • Ja neviens modelis neatbilst, atgriešanas statuss ir nulle. Pretējā gadījumā atgriešanas statuss ir atbilstošā modeļa gadījuma izpildītā pamatteksta izejas statuss.
  • Tāpat kā C nodrošina noklusējuma atslēgvārdu noklusējuma priekšrakstam, tāpat arī Bash reģistra priekšrakstā, mēs varam izmantot aizstājējzīmes zvaigznītes simbolu (*) un definēt galīgo modeļa reģistru, lai definētu noklusējuma reģistru.

1. piemērs. Katrai opcijai ievadiet aprakstu

Šajā piemērā skripts ļauj lietotājam izvēlēties nodaļu un parāda ievadei atbilstošu aprakstu ar atbalss komandas palīdzību. Šajā skriptā mainīgo DEPARTMENT esam piešķīruši kā Datorzinātnes. Tādējādi tiek izpildīts pirmā modeļa gadījuma pamatteksts.

Varat sekot tālāk sniegtajiem norādījumiem.

1. Atveriet termināli (Ctrl+Alt+T) un izveidojiet skriptu:

department.sh 

2. Pievienojiet skriptam šos paziņojumus:

#!/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. Katra no rindiņām ir aprakstīta tālāk:

  • Pirmā skripta rindiņa sākas ar shebang (#!).
  • Tas norāda operētājsistēmai skripta parsēšanai izmantot noteiktu tulku.
  • Mēs esam inicializējuši mainīgo DEPARTMENT kā datorzinātnes.
  • Tagad mēs izmantojam lietas pārskatu.
  • Katra izteiksme ir apstrādāta, izmantojot gadījuma paziņojumu.
  • Pēdējā rindiņa esac ir izmantota, lai izbeigtu lietas izrakstu.

4. Saglabājiet skriptu un padariet to izpildāmu.

chmod +x department.sh 

5. Palaidiet skriptu.

./department.sh 

Izvade:

406

2. piemērs. Vairāku modeļu izmantošana

Katrā klauzulā mēs varam izmantot vairākus modeļu gadījumus. Ja izteiksme sakrīt ar vismaz vienu modeļa gadījumu, tad klauzulas pamatteksts tiek izpildīts. Šajā skriptā mainīgo DEPARTAMENTS esam piešķīruši kā Elektronika un komunikācija. Trešajā modeļa gadījumā ir divas vērtības, ko atdala caurules ( | ) operators. Tādējādi tiek izpildīts trešā modeļa gadījuma pamatteksts.

Varat sekot tālāk sniegtajiem norādījumiem.

1. Atveriet termināli (Ctrl+Alt+T) un izveidojiet skriptu:

department.sh 

2. Pievienojiet skriptam šos paziņojumus:

#!/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. Katra no rindiņām ir apspriesta tālāk:

  • Pirmā skripta rindiņa sākas ar shebang (#!).
  • Tas norāda operētājsistēmai skripta parsēšanai izmantot noteiktu tulku.
  • Mēs esam inicializējuši DEPARTAMENTA mainīgo kā Elektronika un komunikācija.
  • Tagad mēs izmantojam lietas pārskatu.
  • Katra izteiksme ir apstrādāta, izmantojot gadījuma paziņojumu.
  • Pēdējā rindiņa esac ir izmantota, lai izbeigtu lietas izrakstu.

4. Saglabājiet skriptu un padariet to izpildāmu.

chmod +x department.sh 

5. Palaidiet skriptu.

./department.sh 

Izvade:

407 3. piemērs: cilpām

Šajā skriptā mēs esam piešķīruši trīs klases studentu nodaļu masīvā NODAĻA. Citiem vārdiem sakot, mēs apstrādāsim vairāk nekā vienu izteiksmi, kas ir aprakstīta mainīgajā NODAĻA. Lai atkārtotu vairākas izteiksmes, mēs varam izmantot cilpu.

Varat sekot tālāk sniegtajiem norādījumiem.

1. Atveriet termināli (Ctrl+Alt+T) un izveidojiet skriptu:

department.sh 

2. Pievienojiet skriptam šos paziņojumus:

#!/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. Katra no rindiņām ir aprakstīta tālāk:

  • Pirmā skripta rindiņa sākas ar shebang (#!).
  • Tas norāda operētājsistēmai skripta parsēšanai izmantot noteiktu tulku.
  • Mēs esam inicializējuši masīvu DEPARTMENT ar trim virknes literāļiem.
  • Tagad ar for-cilpas palīdzību mēs atkārtojam elementu masīvu.
  • Katra izteiksme ir apstrādāta, izmantojot gadījuma paziņojumu.
  • Pēdējā rindiņa esac ir izmantota, lai izbeigtu lietas izrakstu.

4. Saglabājiet skriptu un padariet to izpildāmu.

chmod +x department.sh 

5. Palaidiet skriptu.

./department.sh 

Izvade:

408

4. piemērs. Lūdziet lietotājam ar Jā vai Nē

Varat sekot tālāk sniegtajiem norādījumiem.

1. Atveriet termināli (Ctrl+Alt+T) un izveidojiet skriptu:

department.sh 

2. Pievienojiet skriptam šos paziņojumus:

#!/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. Katra no rindiņām ir izskaidrota tālāk:

  • Pirmā skripta rindiņa sākas ar shebang (#!).
    • Tas norāda operētājsistēmai skripta parsēšanai izmantot noteiktu tulku.
  • Lietotājam tiek parādīts jautājums Vai esat students? [Jā vai nē].
  • Tagad lietotājs sniedz atbildi, izmantojot tastatūru.
  • Atbildes izvade ir apstrādāta, izmantojot lietas pārskatu.
  • Pēdējā rindiņa esac ir izmantota, lai izbeigtu lietas izrakstu.

4. Saglabājiet skriptu un padariet to izpildāmu.

chmod +x department.sh 

5. Palaidiet skriptu, izmantojot tālāk norādīto komandu.

./department.sh 

Izvade:

409

5. piemērs. Signāla nosūtīšana procesam

Varat sekot tālāk sniegtajiem norādījumiem.

1. Atveriet termināli (Ctrl+Alt+T) un izveidojiet skriptu:

signals.sh 

2. Pievienojiet skriptam šos paziņojumus:

#!/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. Katra no rindiņām ir izskaidrota tālāk:

  • $1 ir signāla numurs un $2 ir procesa ID.
  • Lai nodotu vai nosūtītu signālu uz doto procesa ID, mēs izmantojam komandu kill.
  • Tas dažas sekundes palaidīs miega komandu.
  • Neobligātā pēdējā salīdzinājuma *) pamatteksts tiks izpildīts noklusējuma gadījumā.

4. Saglabājiet skriptu.

5. Palaidiet skriptu, izmantojot tālāk norādīto komandu.

./signals.sh 

Izvade:

$ sleep 10000 $ ps -a | grep sleep 23277 pts/2 00:00:00 sleep $ ./signals.sh 9 31231 Sending SIGKILL signal $ sleep 10000 Killed