Android

Bash kung..mga pahayag

20.Linux для Начинающих - Скрипты Linux Bash, Часть-2

20.Linux для Начинающих - Скрипты Linux Bash, Часть-2

Talaan ng mga Nilalaman:

Anonim

Ang paggawa ng pagpapasya ay isa sa mga pinaka-pangunahing konsepto ng computer programming. Tulad ng anumang iba pang wika ng programming, if , if..else , if..elif..else at nested if pahayag sa Bash ay maaaring magamit upang maisagawa ang code batay sa isang tiyak na kondisyon.

Sa tutorial na ito, ilalakad ka namin sa mga pangunahing kaalaman ng Bash if pahayag at ipapakita sa iyo kung paano gamitin ang mga ito sa iyong mga script ng shell.

if Pahayag

Bash if kondisyon ay maaaring magkaroon ng iba't ibang anyo. Ang pinaka-pangunahing if pahayag ay tumatagal ng sumusunod na form:

if TEST-COMMAND then STATEMENTS fi

Ang if pahayag ay nagsisimula sa if keyword na sinusundan ng kondisyong pagpapahayag at then keyword. Ang pahayag ay nagtatapos sa fi keyword.

Kung ang TEST-COMMAND nagrereport sa True , ang TEST-COMMAND papatayin. Kung ang TEST-COMMAND nagbabalik False , walang nangyari, ang mga TEST-COMMAND hindi papansinin.

Sa pangkalahatan, ito ay isang mabuting kasanayan na laging ipakilala ang iyong code at hiwalay na mga bloke ng code na may mga blangkong linya. Karamihan sa mga tao ay pinili na gumamit ng alinman sa 4-space o 2-space indentation. Ang mga indentasyon at blangko na linya ay ginagawang mas mabasa at maayos ang iyong code.

Tingnan natin ang sumusunod na halimbawa ng script na sinusuri kung ang isang naibigay na numero ay higit sa 10.

#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." fi

I-save ang code sa isang file at patakbuhin ito mula sa linya ng utos:

bash test.sh

Aanyayahan ka ng script na magpasok ng isang numero. Kung halimbawa, nagpasok ka ng 15, susuriin ang true sa test dahil ang 15 ay higit sa 10, at ang utos ng echo loob ng clause then ay isasagawa.

The variable is greater than 10.

if..else Pahayag

Ang pahayag na Bash if..else ng sumusunod na form:

if TEST-COMMAND then STATEMENTS1 else STATEMENTS2 fi

Kung susuriin ng TEST-COMMAND True , ang TEST-COMMAND ay isasagawa. Kung hindi man, kung ang TEST-COMMAND nagbabalik False , ang TEST-COMMAND ay isinasagawa. Maaari kang magkaroon lamang ng isa pang sugnay sa pahayag.

Magdagdag tayo ng else sugnay sa nakaraang halimbawa ng script:

#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." else echo "The variable is equal or less than 10." fi

if..elif..else Pahayag

Ang Bash if..elif..else pahayag ay tumatagal ng sumusunod na form:

if TEST-COMMAND1 then STATEMENTS1 elif TEST-COMMAND2 then STATEMENTS2 else STATEMENTS3 fi

Kung ang TEST-COMMAND1 sumusuri sa True , ang TEST-COMMAND1 ay isasagawa. Kung susuriin ng TEST-COMMAND2 True , ang TEST-COMMAND2 ay isasagawa. Kung wala sa mga utos sa pagsubok na suriin ang True , ang STATEMENTS2 - STATEMENTS2 ay isinasagawa.

Maaari kang magkaroon ng isa o higit pang mga sugnay na elif sa pahayag. Ang else sugnay ay opsyonal.

Ang mga kondisyon ay nasuri nang sunud-sunod. Kapag bumalik ang isang kondisyon True ang natitirang mga kondisyon ay hindi ginanap at ang control ng programa ay lumilipat sa dulo ng if pahayag.

Magdagdag tayo ng isang sugnay na elif sa nakaraang script:

#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." elif] then echo "The variable is equal to 10." else echo "The variable is less than 10." fi

Nested if Pahayag

Pinapayagan ka ng Bash na pugad if pahayag sa loob if pahayag. Maaari kang maglagay ng maramihang if pahayag sa loob ng isa pa if pahayag.

Ang sumusunod na script ay mag-udyok sa iyo na magpasok ng tatlong mga numero at i-print ang pinakamalaking bilang sa tatlong mga numero.

#!/bin/bash echo -n "Enter the first number: " read VAR1 echo -n "Enter the second number: " read VAR2 echo -n "Enter the third number: " read VAR3 if] then if] then echo "$VAR1 is the largest number." else echo "$VAR3 is the largest number." fi else if] then echo "$VAR2 is the largest number." else echo "$VAR3 is the largest number." fi fi

Narito kung paano magiging hitsura ang output:

Enter the first number: 4 Enter the second number: 7 Enter the third number: 2 7 is the largest number. Sa halip na gumamit ng nested if pahayag, kadalasan ay mas mahusay na gamitin ang pahayag ng kaso.

Maramihang Mga Kondisyon

Pinapayagan ka ng lohikal na OR at AND operator na gumamit ng maraming mga kondisyon if pahayag.

Narito ang isa pang bersyon ng script upang mai-print ang pinakamalaking bilang sa tatlong mga numero. Sa bersyon na ito, sa halip na nested if pahayag, gagamitin namin ang lohikal AND ( && ) operator.

#!/bin/bash echo -n "Enter the first number: " read VAR1 echo -n "Enter the second number: " read VAR2 echo -n "Enter the third number: " read VAR3 if] &&] then echo "$VAR1 is the largest number." elif] &&] then echo "$VAR2 is the largest number." else echo "$VAR3 is the largest number." fi

Mga Operator sa Pagsubok

Sa Bash, ang utos ng test tumatagal ng isa sa mga sumusunod na form ng syntax:

test EXPRESSION]

Upang pabayaan ang ekspresyon ng pagsubok gamitin ang lohikal na NOT ( ! ) Operator. Kapag ang paghahambing ng mga string ay palaging gumamit ng solong o dobleng quote upang maiwasan ang anumang mga salitang paghahati o globbing isyu.

Nasa ibaba ang ilan sa mga karaniwang ginagamit na operator:

  • -n VAR - Totoo kung ang haba ng VAR ay mas malaki kaysa sa zero. -z VAR - Totoo kung walang laman ang VAR. STRING1 = STRING2 - Totoo [STRING1 at STRING2 ay pantay. STRING1 != STRING2 - Ang True STRING1 at STRING2 ay hindi pantay. INTEGER1 -eq INTEGER2 - Ang tunay na INTEGER1 at INTEGER2 ay pantay. INTEGER1 -gt INTEGER2 - Ang Tunay na INTEGER1 ay mas malaki kaysa sa INTEGER2. INTEGER1 -lt INTEGER2 - Ang totoong INTEGER1 ay mas mababa sa INTEGER2. INTEGER1 -ge INTEGER2 - Ang totoong INTEGER1 ay pantay o mas malaki kaysa sa INTEGER2. INTEGER1 -le INTEGER2 - Ang totoong INTEGER1 ay pantay o mas mababa sa INTEGER2. -h FILE - Totoo kung umiiral ang FILE at ito ay isang simbolikong link. -r FILE - Totoo kung umiiral ang FILE at mababasa. -w FILE - Totoo kung umiiral ang FILE at nakasulat. -x FILE - Totoo kung umiiral ang FILE at naisakatuparan. -d FILE - Totoo kung umiiral ang FILE at isang direktoryo. -e FILE - Totoo kung umiiral ang FILE at isang file, anuman ang uri (node, direktoryo, socket, atbp.). -f FILE - Totoo kung umiiral ang FILE at isang regular na file (hindi isang direktoryo o aparato).

Konklusyon

Ang if , if..else at if..elif..else pahayag na kontrolin ang daloy ng pagpapatupad ng script ng Bash sa pamamagitan ng pagsusuri sa mga ibinigay na kondisyon.

terminal ng bash