Bash “ja cits” paziņojums: apmācība un piemēri

Paziņojuma if…else izmantošana programmā Bash nosacījuma koda izpildei.

Bash (Bourne Again Shell) ir apvalka komandu uzvedne un skriptu valoda GNU/Linux operētājsistēmās. Tas ir noklusējuma apvalks lielākajai daļai Linux izplatījumu.

Nosacītie paziņojumi ir ļoti svarīgi jebkurā programmēšanas valodā, gan apkopoti, gan skriptēti. Tie ļauj lietotājam izpildīt koda daļu, pamatojoties uz iepriekš definētu nosacījumu, kas ir viens no programmēšanas loģikas pamatiem. Šajā rakstā mēs uzzināsim, kā izmantot ja...citādi nosacījuma paziņojums Bash valodā.

Ievads

The ja...citādi Bash paziņojums ļauj lietotājam manipulēt ar koda plūsmu, pamatojoties uz nosacījumiem. Lietotājs var norādīt atsevišķus izpildāmos koda blokus, no kuriem tikai viens beidzot tiks izpildīts izpildlaikā, pamatojoties uz atbilstošo nosacījumu, kas ir izpildīts.

Ņemiet vērā, ka var norādīt vairāk nekā divus nosacījumus, kuriem elifs paziņojumu var izmantot. Lietotājs var norādīt jebkuru nosacījumu skaitu, izmantojot elifs, un visbeidzot noklusējuma nosacījums, izmantojot cits bloķēt. Apskatīsim vairāk par to sintaksē un piemēros tālāk.

Vispārējā sintakse

Vispārējā sintakse priekš ja...citādi paziņojums Bash valodā ir:

ja tad  cits  fi

Lūk, ja apmierina, t.i., ja atgriež 0 (veiksmi), tad tiek izpildīts koda bloks 1. Ja nosacījums neatgriež 0, t.i., atgriež kļūmes statusu, tad tiek izpildīts koda bloks 2. The ja...citādi bloks beidzas ar a fi paziņojums, apgalvojums.

Vairākiem blokiem, kas atbilst vairākiem nosacījumiem,elifs tiek izmantots:

ja tad  tad elifs  tad elifs  ... ... cits  fi

Šeit nosacījumi tiek pārbaudīti secībā un tiek izpildīts pirmā nosacījuma koda bloks, kas atgriež statusu 0 (veiksmīgs). Piem. ja atgriež statusu, kas nav nulle (atteice), tad ir pārbaudīts. Ja atgriež statusu 0, tiek izpildīts. Pēc tam turpmākie nosacījumi netiek pārbaudīti, un koda izpilde tiek turpināta kodā pēc fi paziņojums, apgalvojums.

Ja neviens no nosacījumiem neatgriež statusu 0, citā blokā tiek izpildīts. Ņemiet vērā, ka cits bloks nav obligāts. Ja nav izpildīts neviens nosacījums, kā arī nē cits bloks ir norādīts, neviens nosacījuma koda bloks nedarbosies, un koda izpilde tiks turpināta kodā pēc fi paziņojumu, kā parādīts zemāk esošajā plūsmas diagrammā.

Ņemiet vērā, ka tad paziņojums ir jāizmanto tikai pēc ja un elifs paziņojumi un nav nepieciešami pēc cits paziņojums, apgalvojums.

Piemēri

Lai izpildītu koda bloku ja mainīgajam ir noteikta vērtība:

x=0 ja [ $x -eq 0 ] tad atbalss "X vērtība ir 0" else atbalso "X vērtība nav 0" fi

Lai pārbaudītu vairākas vērtības:

x=2 ja [ $x -eq 0 ] tad atbalss "Vērtība X ir 0" elif [ $x -eq 1 ] tad atbalss "Vērtība X ir 1" elif [ $x -eq 2 ] tad atbalso "Vērtība no X ir 2", pretējā gadījumā atbalsojas "X vērtība nav 0" fi

Nosacījumi var būt jebkura Linux komanda. Atbilstošais koda bloks tiks izpildīts, ja komanda tiks izpildīta veiksmīgi.

ja npm -v, tad atbalsojas "NPM atrodas sistēmā" citādi sudo apt install npm fi

Iepriekš minētajā piemērā kopš npm netika instalēta sistēmā, komanda npm -v atgrieza statusu, kas nav nulle. Tādējādi koda izpilde tika veikta cits bloku, kur mēs instalējam npm, izmantojot apt pakotņu pārvaldnieks. Kā redzam, tas lika man ievadīt paroli un sāka npm instalēšanu.

Varam arī ligzdot citu ja...citādi bloks iekšpusē an ja, cits vai elifs bloķēt:

x=0 y=1 ja [ $x -eq 0 ] tad atbalss "X ir 0" ja [ $y -eq 1 ] tad atbalss "Y ir 1" else atbalss "Y nav 1" fi else atbalss "X ir nevis 0"fi

Tas ir noderīgi, ja ir jāpārbauda atsevišķa nosacījumu kopa, kad ir izpildīts sākotnējais nosacījums.

Piemēram, šāds kods mēģina instalēt tīmekļa servera programmatūru:

ja nginx -v, tad atbalss "NGINX jau ir instalēts." citādi, ja sudo apt instalējiet nginx, atkārtojiet "NGINX instalēšana veiksmīga". elif sudo apt instalējiet apache2, pēc tam atkārtojiet "APACHE2 instalēšana veiksmīga". else echo "Nevar instalēt tīmekļa programmatūru." fi

Kods vispirms pārbauda, ​​vai Nginx jau ir instalēts sistēmā. Ja tā ir, tas vienkārši parāda ziņojumu un iziet. Ja tā nav, tas mēģina instalēt Nginx.

Ja kāda iemesla dēļ Nginx nevarēja instalēt sistēmā no pakotnes, tā mēģina instalēt Apache2. Ja pat Apache2 instalēšanas laikā rada kļūdu, tas iziet, parādot ziņojumu, ka programmatūru nevar instalēt.

Līdzīgā veidā ligzdotu bloku var izmantot iekšpusē elifs bloķēt arī.

Izpilde ja...citādi: skripti un komandrinda

Līdzīgi jebkuram Bash kodam, ja...citādi paziņojumu var izmantot Bash apvalkā tieši vai no izpildāmā čaulas skripta faila. Kad Baša tulks atrod ja, cits vai elifs paziņojums, tas turpina čaulu, lai ļautu lietotājam ievadīt koda bloku.

Lietotājs var arī saglabāt šo kodu skripta failā un izpildīt skripta failu.

The #!/bin/bash sākumā norāda tulku, kas tiks izmantots, kad fails tiek izpildīts. Lai gan Bash ir mūsdienās visbiežāk izmantotais apvalks, daži lietotāji dod priekšroku tādiem čauliem kā zsh, kas jānorāda bash vietā šī faila sākumā.

Lai šim failam piešķirtu izpildes atļaujas, palaidiet:

chmod +x test.sh

Visbeidzot, lai izpildītu failu, palaidiet:

./test.sh

Secinājums

Līdzīgi kā jebkurā programmēšanas valodā, ja...citādi paziņojums ir Baša pamatīpašība. Apgūstot tā lietošanu, var rakstīt gan pamata, gan papildu skriptus.