Paano Mag-master ng Conditional Logic sa Bash

Paano Mag Master Ng Conditional Logic Sa Bash



Ang paggamit ng conditional logic ay isang napakahalagang bahagi ng anumang programming language. Ang conditional logic ay maaaring ipatupad sa Bash sa iba't ibang paraan upang malutas ang mga problema sa programming. Ang mga paraan ng paggamit ng conditional logic sa Bash sa pamamagitan ng iba't ibang uri ng 'if' at 'case' na mga pahayag upang ihambing ang string at mga numeric na halaga, pagsuri sa variable na nilalaman, pagsuri sa pagkakaroon ng file o direktoryo, atbp. ay ipinapakita sa tutorial na ito .

Listahan ng Nilalaman:

  1. Paggamit ng 'Kung' na Pahayag
  2. Paggamit ng 'If-Else' na Pahayag
  3. Paggamit ng 'If-Elif-Else' na Pahayag
  4. Paggamit ng 'Kung' na Pahayag upang Suriin ang isang Walang Lamang Variable
  5. Paggamit ng 'Kung' na Pahayag sa Logical Operator
  6. Paggamit ng Nested 'If' na Mga Pahayag
  7. Paggamit ng 'Kung' na Pahayag upang Suriin ang Pag-iral ng File
  8. Paggamit ng 'Kung' na Pahayag upang Suriin ang Pag-iral ng Direktoryo
  9. Paggamit ng 'If' na Pahayag sa Regex
  10. Paggamit ng 'Kaso' na Pahayag

Paggamit ng 'Kung' na Pahayag

Ipinapakita ng halimbawang ito ang simpleng paggamit ng 'if' na pahayag sa Bash. Anim na uri ng paghahambing na operator ang maaaring gamitin upang ihambing ang mga numerong halaga sa Bash. Ang mga ito ay '-eq' (katumbas), '-ne' (hindi katumbas), '-le' (mas mababa sa katumbas), '-ge' (mas malaki kaysa katumbas), '-lt' (mas mababa sa), at ' -gt” (mas malaki kaysa). Ang mga paggamit ng '-lt' at '-eq' ay ipinapakita sa sumusunod na script kung ang numero ay mas mababa sa 99 o hindi pa nasuri gamit ang '-lt' operator. Ang numero ay pantay o kakaiba at sinusuri ng '-eq' operator.







#!/bin/bash

#Magtalaga ng numeric na halaga

( ( numero = limampu ) )

#Tingnan ang numeric na halaga gamit ang 'if' statement

kung [ $number -lt 99 ]

pagkatapos

echo 'May bisa ang numero.'

maging

#Tingnan kung pantay ang numero o hindi

kung [ $ ( ( $number % 2 ) ) -eq 0 ]

pagkatapos

echo 'Ang numero ay pantay.'

maging

Output :



Lumilitaw ang sumusunod na output pagkatapos isagawa ang nakaraang script:



  p1





Pumunta sa tuktok

Paggamit ng 'If-Else' na Pahayag

Ang paggamit ng “if-else” na pahayag ay ipinapakita sa sumusunod na script. Kinukuha ang isang string value mula sa user at sinusuri kung ang value ay “BLUE” o hindi gamit ang “if-else” statement.



#!/bin/bash

#Kumuha ng string value mula sa user

basahin -p 'Ilagay ang iyong paboritong kulay:' kulay

#Tingnan ang halaga ng string gamit ang 'if-else' na pahayag

kung [ ${kulay^^} == 'ASUL' ]

pagkatapos

echo 'Fine, Blue color available.'

iba pa

echo ' $kulay ay hindi magagamit.'

maging

Output :

Ang sumusunod na output ay lilitaw pagkatapos isagawa ang nakaraang script kung ang 'pula' ay kinuha bilang input:

  p2-1

Ang sumusunod na output ay lilitaw pagkatapos isagawa ang nakaraang script kung ang 'asul' ay kinuha bilang input:

  p2-2

Pumunta sa tuktok

Paggamit ng 'If-Elif-Else' na Pahayag

Ang paggamit ng 'if-elif-else' na pahayag ay ipinapakita sa sumusunod na script. Kinukuha ang isang numero mula sa user at nilagyan ng check ang iba't ibang value hanggang sa matagpuan ang anumang tugma. Kung may nakitang tugma, ipi-print ang kaukulang mensahe. Kung walang nakitang tugma, ang default na mensahe ay ipi-print.

#!/bin/bash

#Kunin ang halaga ng id mula sa gumagamit

basahin -p 'Ilagay ang iyong serial number:' serial

#Tingnan ang halaga ng input gamit ang 'if-elif-else' na pahayag

kung [ $serial == '4523' ]

pagkatapos

echo 'Napili ka sa grupo A.'

Elif [ $serial == '8723' ]

pagkatapos

echo 'Napili ka sa grupo B.'

Elif [ $serial == '3412' ]

pagkatapos

echo 'Napili ka sa grupo C.'

iba pa

echo 'Hindi ka pinili' .

maging

Output:

Lumilitaw ang sumusunod na output pagkatapos isagawa ang script na may halagang 8723:

  p3-1

Lumilitaw ang sumusunod na output pagkatapos isagawa ang script na may halagang 9078:

  p3-2

Pumunta sa tuktok

Paggamit ng 'Kung' na Pahayag upang Suriin ang isang Walang Lamang Variable

Ang paraan ng pagsuri kung ang isang variable ay walang laman na hindi gumagamit ng isang 'kung' na pahayag ay ipinapakita sa sumusunod na script. Ang '-z' na opsyon ay ginagamit sa 'if' na pahayag upang gawin ang gawaing ito.

#!/bin/bash

#Kunin ang halaga ng id mula sa gumagamit

basahin -p 'Ilagay ang iyong serial number:' serial

#Tingnan kung walang laman ang variable o wala

kung [ ! -Kasama $serial ]

pagkatapos

#Tingnan ang halaga ng input gamit ang 'if-elif-else' na pahayag

kung [ $serial == '690' ]

pagkatapos

echo 'Napili ka sa team-1.'

Elif [ $serial == '450' ]

pagkatapos

echo 'Napili ka sa team-2.'

iba pa

echo 'Hindi ka pinili' .

maging

iba pa

echo 'Walang binigay na serial number.'

maging

Output :

Lumilitaw ang sumusunod na output pagkatapos isagawa ang script na may halagang 690:

  p4-1

Ang sumusunod na output ay lilitaw pagkatapos isagawa ang script kung walang halaga ng input ang kinuha:

  p4-2

Pumunta sa tuktok

Paggamit ng 'Kung' na Pahayag sa mga Logical Operator

Tatlong uri ng lohikal na operator ang maaaring gamitin sa Bash conditional statement. Ito ay lohikal O (||), lohikal AT (&&), at lohikal na HINDI (!). Kinukuha ang halaga ng code mula sa user. Kung ang halaga ng input ay walang laman, ang halaga ay sinusuri ng dalawang halaga ng code gamit ang lohikal na OR. Kung ang halaga ay tumutugma sa anumang code, ang kaukulang mensahe ay ipi-print. Kung walang nakitang katugmang code, ipi-print ang default na mensahe.

#!/bin/bash

#Kunin ang code ng kurso mula sa gumagamit

basahin -p 'Ilagay ang code ng kurso:' code

#Tingnan kung ang variable ay walang laman o wala

kung [ ! -Kasama $code ]

pagkatapos

#Tingnan ang halaga ng input gamit ang 'if-elif-else' na pahayag

kung [ [ $code == 'CSE-106' || $code == 'CSE-108' ] ]

pagkatapos

echo 'CSE course.'

Elif [ [ $code == 'BBA-203' || $code == 'BBA-202' ] ]

pagkatapos

echo 'Kurso ng BBA.'

iba pa

echo 'Di-wastong code ng kurso.'

maging

iba pa

echo 'Walang ibinigay na code ng kurso.'

maging

Output :

Lumilitaw ang sumusunod na output pagkatapos isagawa ang script na may halaga ng input na 'CSE-108':

  p5-1

Ang sumusunod na output ay lilitaw pagkatapos isagawa ang script na may input value na 'BBA-56':

  p5-2

Pumunta sa tuktok

Paggamit ng Nested 'If' na Mga Pahayag

Kapag ang isang 'kung' kundisyon ay ginamit sa loob ng isa pang 'kung' kundisyon, ito ay tinatawag na isang nested 'kung' na pahayag. Ang paraan ng paggamit ng nested na “if” ay ipinapakita sa sumusunod na script. Dalawang mark value ang kinuha mula sa user. Kung walang laman ang mga value ng input, susuriin ng unang kundisyon na 'kung' kung ang halaga ng '$theory' ay mas malaki o katumbas ng 60 o hindi. Kung ang unang 'if' na kundisyon ay nagbabalik ng 'true', ang pangalawang 'if' na kundisyon ay nagsusuri kung ang halaga ng '$lab' ay mas malaki o katumbas ng 50 o hindi. Kung ang pangalawang kundisyon na 'kung' ay nagbabalik din ng 'totoo', isang mensahe ng tagumpay ay naka-print. Kung hindi, isang mensahe ng pagkabigo ay naka-print.

#!/bin/bash

#Kunin ang marka ng teorya

basahin -p 'Ipasok ang marka ng teorya:' teorya

#Kunin ang marka ng lab

basahin -p 'Ipasok ang marka ng lab:' lab

#Tingnan kung ang mga variable ay walang laman o wala

kung [ [ ! -Kasama $teorya && ! -Kasama $lab ] ]

pagkatapos

#Tingnan ang mga halaga ng input gamit ang isang nested na 'if' na pahayag

kung [ $teorya -ge 60 ]

pagkatapos

kung [ $lab -ge limampu ]

pagkatapos

echo 'Nakapasa ka.'

iba pa

echo 'Nabigo ka.'

maging

iba pa

echo 'Nabigo ka.'

maging

iba pa

echo 'Walang laman ang teorya o lab mark.'

maging

Output :

Ang sumusunod na output ay lilitaw kung pareho o isa sa mga halaga ng input ay walang laman:

  p6-1

Ang sumusunod na output ay lilitaw kung 78 ay kinuha bilang theory mark at 45 ay kinuha bilang lab marks. Dito, ang pangalawang 'kung' kundisyon ay nagbabalik ng 'false':

  p6-2

Ang sumusunod na output ay lilitaw kung 67 ay kinuha bilang theory mark at 56 ay kinuha bilang lab marks. Dito, ang parehong 'kung' kundisyon ay nagbabalik ng 'totoo':

  p6-3

Ang sumusunod na output ay lilitaw kung 50 ay kinuha bilang theory mark at 80 ay kinuha bilang lab marks. Dito, ang unang 'kung' kundisyon ay nagbabalik ng 'false':

  p6-4

Pumunta sa tuktok

Paggamit ng 'Kung' na Pahayag upang Suriin ang File Existence

Ang pagkakaroon ng file ay maaaring suriin ng bash script sa dalawang paraan. Ang isa ay gumagamit ng '-f' operator na may '[]' bracket. Ang isa pa ay gumagamit ng 'test' command at ang '-f' operator. Ang isang filename ay kinuha at sinusuri ang pagkakaroon ng file gamit ang 'kung' kundisyon sa '-f' operator. Pagkatapos, kukuha ng isa pang filename at suriin ang pagkakaroon ng file gamit ang “if” statement na may “test” command at ang “-f” operator.

#!/bin/bash

#Kunin ang filename

basahin -p 'Maglagay ng filename:' fn1

#Tingnan kung ang file ay umiiral o wala nang hindi gumagamit ng `pagsubok`

kung [ -f $fn1 ]

pagkatapos

echo ' $fn1 umiiral ang file.'

iba pa

echo ' $fn1 walang file.'

maging

#Magdagdag ng bagong linya

echo

#Kumuha ng isa pang filename

basahin -p 'Maglagay ng isa pang filename:' fn2

#Tingnan kung ang file ay umiiral o hindi gamit ang `pagsubok`

kung pagsusulit -f $fn2 ; pagkatapos

echo ' $fn2 umiiral ang file.'

#Tingnan kung walang laman ang file o hindi gamit ang `test`

kung pagsusulit -Kasama $fn2 ; pagkatapos

echo ' $fn2 walang laman ang file.'

iba pa

echo ' $fn2 walang laman ang file.'

maging

iba pa

echo ' $fn2 walang file.'

maging

Output :

Lumilitaw ang sumusunod na output pagkatapos isagawa ang script sa pamamagitan ng pagkuha sa “test.txt” at “testing.txt” bilang mga filename. Ayon sa output, ang parehong mga file ay umiiral sa kasalukuyang lokasyon at ang 'testing.txt' na file ay walang laman:

  p7-1

Lumilitaw ang sumusunod na output pagkatapos isagawa ang script sa pamamagitan ng pagkuha sa 'f1.txt' at 'test.txt' bilang mga filename. Ayon sa output, ang 'f1.txt' na file ay hindi umiiral sa kasalukuyang lokasyon at ang 'test.txt' na file ay walang laman:

  p7-2

Pumunta sa tuktok

Paggamit ng 'Kung' na Pahayag upang Suriin ang Pag-iral ng Direktoryo

Ang pagkakaroon ng direktoryo ay maaaring suriin ng Bash script sa dalawang paraan tulad ng file. Ang isa ay gumagamit ng '-d' operator na may '[]' bracket. Ang isa pa ay gumagamit ng 'test' command at ang '-d' operator. Ang isang pangalan ng direktoryo ay kinuha at sinusuri ang pagkakaroon ng direktoryo gamit ang 'kung' kundisyon sa '-d' operator. Pagkatapos, isa pang pangalan ng direktoryo ang kinuha at sinusuri ang pagkakaroon ng file gamit ang 'if' na pahayag na may 'test' command at ang '-d' operator.

#!/bin/bash

#Kumuha ng pangalan ng direktoryo

basahin -p 'Magpasok ng pangalan ng direktoryo:' ikaw1

#Tingnan kung umiiral ang direktoryo o wala nang hindi gumagamit ng `pagsubok`

kung [ -d $dir1 ]

pagkatapos

echo ' $dir1 mayroong direktoryo.'

iba pa

echo ' $dir1 hindi umiiral ang direktoryo.'

maging

#Magdagdag ng bagong linya

echo

#Kumuha ng isa pang pangalan ng direktoryo

basahin -p 'Magpasok ng isa pang pangalan ng direktoryo:' dir2

#Tingnan kung ang file ay umiiral o hindi gamit ang `pagsubok`

kung pagsusulit -d $dir2

pagkatapos

echo ' $dir2 mayroong direktoryo.'

iba pa

echo ' $dir2 hindi umiiral ang direktoryo.'

maging

Output :

Lumilitaw ang sumusunod na output pagkatapos isagawa ang script na may mga pangalan ng direktoryo na 'temp' at 'mga file'. Ayon sa output, ang parehong mga direktoryo ay umiiral sa kasalukuyang lokasyon. Pagkatapos, ang utos na 'ls' ay isinasagawa upang suriin ang nilalaman ng mga direktoryo:

  p8-1

Ang sumusunod na output ay lilitaw pagkatapos isagawa ang script na may 'pagsubok' at 'bagong' mga pangalan ng direktoryo. Ayon sa output, ang parehong mga direktoryo ay hindi umiiral sa kasalukuyang lokasyon. Pagkatapos, ang output ng command na 'ls' ay nagpapakita na ang parehong mga direktoryo ay hindi umiiral:

  p8-2

Pumunta sa tuktok

Paggamit ng 'Kung' na Pahayag sa Regex

Ang sumusunod na script ay nagpapakita ng paraan ng pagpapatunay ng input data gamit ang isang “if” na pahayag na may regex. Dito, dalawang value ng input ang kinukuha mula sa user at iniimbak sa mga variable na '$bookname' at '$bookprice'. Ang kundisyong 'kung' ay ginagamit sa script upang suriin na ang variable na '$bookname' ay naglalaman ng lahat ng mga alphabetic na character at ang '$bookprice' ay naglalaman ng isang numero.

#!/bin/bash

#Kunin ang pangalan ng libro at presyo mula sa gumagamit

echo -n 'Ilagay ang pangalan ng libro:'

basahin pangalan ng aklat

echo -n 'Ilagay ang presyo ng libro:'

basahin bookprice

#Tingnan ang pangalan ng libro ay naglalaman lamang ng alpabeto

kung ! [ [ ' $pangalan ng aklat ' =~ [ A-Za-z ] ] ] ; pagkatapos

echo 'Di-wasto ang pangalan ng libro.'

iba pa

echo 'May bisa ang pangalan ng libro.'

maging

#Tingnan ang presyo ng libro ay naglalaman lamang ng digit

kung ! [ [ ' $bookprice ' =~ [ 0 - 9 ] ] ] ; pagkatapos

echo 'Ang presyo ng libro ay maaaring maglaman ng digit lamang.'

iba pa

echo 'May bisa ang presyo ng libro.'

maging

Output :

Lumilitaw ang sumusunod na output pagkatapos isagawa ang script na may mga halaga ng input ng 'Bash Programming' bilang pangalan ng libro at 78 bilang presyo ng libro:

  p9-1

Lumilitaw ang sumusunod na output pagkatapos isagawa ang script na may mga halaga ng input na 90 bilang pangalan ng libro at 'Bash' bilang presyo ng libro:

  p9-2

Pumunta sa tuktok

Paggamit ng 'Kaso' na Pahayag

Ang 'case' na pahayag ay ang kahalili ng 'if-elif-else' na pahayag ngunit lahat ng mga gawain ng 'if-elif-else' na pahayag ay hindi maaaring gawin gamit ang 'case' na pahayag. Ang simpleng paggamit ng 'case' na pahayag ay ipinapakita sa sumusunod na script. Kinukuha ang isang numerong halaga mula sa user bilang ang kasalukuyang halaga ng buwan. Pagkatapos, ipi-print ang kaukulang buwan kung may makikitang anumang katumbas na halaga sa statement na 'case'. Kung hindi, ang default na mensahe ay naka-print.

#!/bin/bash

#Kunin ang kasalukuyang halaga ng buwan sa bilang

basahin -p 'Ilagay ang buwan ng ngayon sa bilang:' b_month

#Print ang text bago i-print ang pangalan ng buwan

echo -n 'Ang kasalukuyang pangalan ng buwan ay '

#Alamin at i-print ang katugmang pangalan ng buwan batay sa input

kaso $b_month sa

1 | 01 ) echo 'Enero.' ;;

2 | 02 ) echo 'Pebrero.' ;;

3 | 03 ) echo 'Marso.' ;;

4 | 04 ) echo 'Abril.' ;;

5 | 05 ) echo 'Mayo.' ;;

6 | 06 ) echo 'Hunyo.' ;;

7 | 07 ) echo 'Hulyo.' ;;

8 | 08 ) echo 'Agosto.' ;;

9 | 09 ) echo 'Setyembre.' ;;

10 ) echo 'Oktubre.' ;;

labing-isa ) echo 'Nobyembre.' ;;

12 ) echo 'Disyembre.' ;;

* ) echo 'hindi mahanap.' ;;

esac

Output :

Ang sumusunod na output ay lilitaw pagkatapos isagawa ang script na may halagang 6:

  p10-1

Lumilitaw ang sumusunod na output pagkatapos isagawa ang script na may halagang 09:


  p10-2

Ang sumusunod na output ay lilitaw pagkatapos isagawa ang script na may halaga na 14:

  p10-3

Pumunta sa tuktok

Konklusyon

Ang iba't ibang paggamit ng conditional logic gamit ang 'if' at 'case' na mga pahayag ay ipinapakita sa 10 halimbawa ng tutorial na ito. Ang konsepto ng paggamit ng conditional logic sa Bash ay mali-clear para sa mga bagong gumagamit ng Bash pagkatapos basahin ang tutorial na ito.