20.Linux для Начинающих - Скрипты Linux Bash, Часть-2
Talaan ng mga Nilalaman:
ifPahayagif..elsePahayagif..elif..elsePahayag- Nested
ifPahayag - Maramihang Mga Kondisyon
- Mga Operator sa Pagsubok
- Konklusyon
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:
-
-nVAR- Totoo kung ang haba ng VAR ay mas malaki kaysa sa zero.-zVAR- 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.-hFILE- Totoo kung umiiral ang FILE at ito ay isang simbolikong link.-rFILE- Totoo kung umiiral ang FILE at mababasa.-wFILE- Totoo kung umiiral ang FILE at nakasulat.-xFILE- Totoo kung umiiral ang FILE at naisakatuparan.-dFILE- Totoo kung umiiral ang FILE at isang direktoryo.-eFILE- Totoo kung umiiral ang FILE at isang file, anuman ang uri (node, direktoryo, socket, atbp.).-fFILE- 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.
"Ang bawat tao'y nagsasalita tungkol sa kung paano mga consumer hindi alam kung ano ang nangyayari, at kung alam nila kung ano ang nangyayari, sila ay magiging horrified, "sabi ni Rubin. "Ang dahilan kung bakit hindi nila alam ang tungkol dito ay hindi sila nag-aalinlangan upang malaman ang tungkol dito, at ang dahilan kung bakit hindi sila nag-aalinlangan upang malaman ang tungkol dito ay dahil wala nang masama ang nangyari."
[Karagdagang pagbabasa: Ang pinakamahusay TV streaming services]
Ang Verizon ay gumawa ng ilang mga menor de edad na mga pagsasaayos sa pinakabagong serye ng mga 3G coverage ng mga ad, ngunit ang AT & T ay hindi impressed. Pinalawak ng AT & T ang paunang reklamo at kahilingan para sa injunction na isama ang mga bagong ad, at nagbigay ng pahayag upang 'itakda ang tuwid na tala' tungkol sa mga claim sa Verizon. Talaga bang nararapat ang mga ad na ito ng pansin?
Una sa lahat, ano ang inaasahan ng AT & T na magawa? Kung ang layunin ay upang maiwasan ang mga customer at prospective na mga customer mula sa pag-aaral tungkol sa kanyang kalat 3G coverage, ang pag-file ng isang kaso at pagguhit ng pansin ng media ay hindi isang mahusay na diskarte. Ang netong resulta ay isang bungkos ng libreng advertising para sa Verizon.
Holiday Wii Sales Rise or Fall? P> p> p> Ang mga benta ng Thanksgiving linggo ng Wii ng Nintendo ay bumagsak sa Estados Unidos sa kabila ng isang $ 50 na pagbawas ng presyo na idinisenyo upang mapasigla ang kinikilalang kilalang console. Sa pahayag ng pahayag, ipinahayag ng kumpanya na ito ay ibinenta tungkol sa 550,000 mga yunit ng console sa panahon ng holiday week, o halos isang pangatlo na mas kaunti kaysa sa halos 800,000 mga yunit na naibenta sa parehong panahon noong nakaraan
Na tunog masama para sa Nintendo, at sa isang pakiramdam na ito, lalung-lalo na na binibigyan ng mga numero ng benta mula sa Sony at Microsoft na nagpapahiwatig ng parehong mga system na mahusay na ginanap sa panahon ng mahalagang pagtanggap sa panahon ng pagbebenta ng holiday. Na ang mga tuntunin ng ekonomiya bilang isang pangunahing dahilan ng pagbawas at nagsisimula sa pagturo sa mas mababa pampagana mga paliwanag, tulad ng demographic saturation, o mas masahol pa - hindi kasiyahan sa isang w







