John Hockenberry: We are all designers
Sadržaj:
if
Izjavaif..else
Izjavaif..elif..else
Izjava- Gniježđen
if
Izjave - Višestruki uvjeti
- Ispitni operateri
- Zaključak
Donošenje odluka jedan je od najosnovnijih koncepata računalnog programiranja. Kao i u bilo kojem drugom programskom jeziku,
if
,
if..else
,
if..elif..else
i ugniježđeno
if
izrazi u Bashu mogu koristiti za izvršavanje koda na temelju određenog uvjeta.
U ovom ćemo vam vodiču proći osnove Bash-a
if
izjave i pokazati vam kako ih koristiti u svojim skriptu ljuske.
if
Izjava
Bash
if
uvjeti mogu imati različite oblike. Najosnovnije
if
izjava ima sljedeći oblik:
if TEST-COMMAND then STATEMENTS fi
Izjava
if
započinje s ključnom riječi
if
slijedi uvjetni izraz i
then
ključna riječ. Izjava se završava ključnom riječi
fi
.
Ako
TEST-COMMAND
ocijeni vrijednost
True
,
STATEMENTS
se izvršavaju. Ako
TEST-COMMAND
vrati
False
, ništa se ne dogodi,
STATEMENTS
se zanemaruju.
Općenito, dobra je praksa da uvijek uvlačite kôd i odvajate blokove koda praznim linijama. Većina ljudi odabire umetanje s 4 ili 2 prostora. Urezani i prazni redovi čine vaš kod čitljivijim i organiziranijim.
Pogledajmo sljedeći primjer skripte koja provjerava je li dati broj veći od 10.
#!/bin/bash echo -n "Enter a number: " read VAR if] then echo "The variable is greater than 10." fi
Spremite kod u datoteku i pokrenite je iz naredbenog retka:
bash test.sh
Skripta će vas zatražiti da unesete broj. Ako, na primjer, unesete 15, naredba za
test
procijenit će vrijednost
true
jer je 15 veća od 10, a naredba
echo
unutar
then
rečenice će se izvršiti.
The variable is greater than 10.
if..else
Izjava
Izjava Bash
if..else
ima sljedeći oblik:
if TEST-COMMAND then STATEMENTS1 else STATEMENTS2 fi
Ako
TEST-COMMAND
ocijeni vrijednost
True
,
STATEMENTS1
će se izvršiti. U suprotnom, ako
TEST-COMMAND
vrati
False
,
STATEMENTS2
će se izvršiti. U izjavi možete imati samo
else
jednu klauzulu.
Dodajmo
else
rečenicu prethodnom primjeru skripte:
#!/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
Izjava
Izjava Bash
if..elif..else
ima sljedeći oblik:
if TEST-COMMAND1 then STATEMENTS1 elif TEST-COMMAND2 then STATEMENTS2 else STATEMENTS3 fi
Ako
TEST-COMMAND1
ocijeni vrijednost
True
,
TEST-COMMAND1
će se izvršiti. Ako
TEST-COMMAND2
ocijeni vrijednost
True
,
STATEMENTS2
će se izvršiti. Ako nijedna naredba ispitivanja ne ocijeni vrijednost
True
,
STATEMENTS2
se izvršava.
Možete imati jednu ili više
elif
klauzula u izjavi.
else
klauzula nije obavezna.
Uvjeti se ocjenjuju uzastopno. Jednom kada se uvjet vrati
True
, preostali uvjeti se ne izvršavaju i kontrola programa prelazi na kraj naredbi
if
.
Dodajmo
elif
klauzulu prethodnoj skripti:
#!/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
Gniježđen
if
Izjave
Bash vam omogućuje da se gnijezde
if
izjave unutar
if
. Možete staviti više
if
izjava unutar drugog
if
iskaza.
Sljedeća skripta će vas zatražiti da unesete tri broja i ispisat ćete najveći broj među tri broja.
#!/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
Evo kako će izgledati izlaz:
Enter the first number: 4 Enter the second number: 7 Enter the third number: 2 7 is the largest number.
Umjesto upotrebe ugniježđenih
if
izjava, obično je učinkovitije koristiti izjavu slučaja.
Višestruki uvjeti
Logični operateri
OR
i
AND
omogućuju vam upotrebu više uvjeta u izjavama
if
.
Evo još jedne verzije skripte za ispis najvećeg broja među tri broja. U ovoj verziji, umjesto ugniježđenih
if
izjava, upotrijebit ćemo logički operator
AND
(
&&
).
#!/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
Ispitni operateri
U Bashu
test
naredba ima jedan od sljedećih oblika sintakse:
test EXPRESSION]
Za negiranje testnog izraza koristite logički operator
NOT
(
!
). Pri uspoređivanju nizova uvijek koristite pojedinačne ili dvostruke navodnike da biste izbjegli bilo kakve dijeljenje riječi ili probleme s globulima.
Ispod su neki od najčešće korištenih operatora:
-
-n
VAR
- Točno ako je duljina VAR-a veća od nule.-z
VAR
- Točno ako je VAR prazna.STRING1 = STRING2
- Točno [STRING1 i STRING2 su jednaki.STRING1 != STRING2
- istinski STRING1 i STRING2 nisu jednaki.INTEGER1 -eq INTEGER2
- True INTEGER1 i INTEGER2 su jednaki.INTEGER1 -gt INTEGER2
- Pravi INTEGER1 veći je od INTEGER2.INTEGER1 -lt INTEGER2
- Istinski INTEGER1 je manji od INTEGER2.INTEGER1 -ge INTEGER2
- Istinski INTEGER1 jednak je ili veći od INTEGER2.INTEGER1 -le INTEGER2
- Istinski INTEGER1 jednak je ili manji od INTEGER2.-h
FILE
- Točno ako FILE postoji i simbolička je veza.-r
FILE
- Točno ako FILE postoji i čitljiv.-w
FILE
- Točno ako FILE postoji i može se pisati.-x
FILE
- Točno ako FILE postoji i može se izvršiti.-d
FILE
- Točno ako FILE postoji i ako je direktorij.-e
FILE
- Točno ako FILE postoji i datoteka je, bez obzira na vrstu (čvor, direktorij, utičnica itd.).-f
FILE
- Točno ako FILE postoji i uobičajena je datoteka (a ne mapa ili uređaj).
Zaključak
if..else
if
,
if..else
i
if..elif..else
omogućuju vam kontrolu tijeka izvršenja Bash skripte procjenom zadanih uvjeta.
Roggeova izjava u suprotnosti je s Kevinom Gosperom, predsjednikom MOC-ove komisije za tisak, koja je u srijedu rekla "MOO od čime su pregovarači s kineskim [da] neka osjetljiva mjesta budu blokirana na temelju toga što se ne smatraju povezanim s Igrama ", navodi se u izvješćima medija. Niti Rogge ni MOO nisu pojasnili zašto su njih dvojica imali različita gledišta o situaciji.
![Roggeova izjava u suprotnosti je s Kevinom Gosperom, predsjednikom MOC-ove komisije za tisak, koja je u srijedu rekla "MOO od čime su pregovarači s kineskim [da] neka osjetljiva mjesta budu blokirana na temelju toga što se ne smatraju povezanim s Igrama ", navodi se u izvješćima medija. Niti Rogge ni MOO nisu pojasnili zašto su njih dvojica imali različita gledišta o situaciji. Roggeova izjava u suprotnosti je s Kevinom Gosperom, predsjednikom MOC-ove komisije za tisak, koja je u srijedu rekla "MOO od čime su pregovarači s kineskim [da] neka osjetljiva mjesta budu blokirana na temelju toga što se ne smatraju povezanim s Igrama ", navodi se u izvješćima medija. Niti Rogge ni MOO nisu pojasnili zašto su njih dvojica imali različita gledišta o situaciji.](https://i.joecomp.com/web-apps-2018/olympic-chief-no-deal-on-china-net-censorship.jpg)
"Naši zahtjevi su isti od gradova domaćina do gradova domaćina i ostaju nepromijenjeni otkako je MOO ušao u gradski ugovor s Pekingu 2001. godine" Rekao je Rogge. "Kada je Peking dobio nagradu, MOO je zahtijevao da medijima pruži najveći mogući pristup izvještavanju o Olimpijskim igrama. MOO je to zahtijevao, a to je ono što je BOCOG [Organizacijski odbor Pekinga za Igre XXIX Olimpijade] rekao će isporučiti. "
Izjava na web stranici kineskog ministarstva zdravstva rekla je da praksa nema medicinsku osnovu i zabranjuje njegovu kliničku upotrebu. Naredba je zabranila praksu diljem zemlje, ali je posebno spomenula zloglasnu bolnicu u istočnoj provinciji Shandong.

Pozivi u bolnicu u Shandongu odsjeli su se u srijedu ujutro, ali je prošloga tjedna glasnogovornica bolnice rekla da su "senzacionalizirani" medijski izvještaji već doveli do prekida šoka tretman. Šokovi su trebali uzrokovati povezivanje negativnih rezultata s korištenjem interneta, prema bolnici. Subjekti su bili prisiljeni priznati pogreške prilikom primanja šokova, priopćili su neki korisnici internetskih računa.
Izjava o slučaju Bash

Bash izjave slučaja obično se koriste za pojednostavljenje složenih uvjeta kad imate više različitih izbora. Korištenje izraza slučaja umjesto ugniježđena ako će vam izjave pomoći da učinite svoje bash skripte čitljivijim i lakšim za održavanje.