01an de 08
Komencanta Gvidilo Al BASH - Komparanta Aferojn
En la antaŭa parto de la BASH-lernilo ni rigardis kondiĉajn deklarojn .
Tiu gvidilo estis tre longa sed vere nur montris kiel kontroli la fluon de la logiko. Ĉi tiu gvidilo montras la malsamajn manierojn, en kiuj vi povas kompari variablojn.
La supra bildo montras la unuan ekzemplon en la gvidilo de ĉi tiu semajno:
#! / bin / bash
nomo1 = "gary"
nomo2 = "bob"se ["$ name1" = "$ name2"]
tiam
eĥo "la nomoj-matĉo"
alia
eĥo "la nomoj ne kongruas"
fi
En la supra skripto mi difinis du variablojn nomitan nomon1 kaj nomo2 kaj atribuis al ili la valorojn "gary" kaj "bob". Ĉar la variabloj estas enhavitaj inter kotizoj, ili estas nomataj ŝnuraj variabloj, kiuj fariĝas pli gravaj kiel la lernilo daŭras.
La tuta skripto farita komparas la valoron de $ name1 kaj $ name2 kaj se ili kongruas eligo de la ĉeno "la nomoj-matĉo" kaj se ili ne elsendas la ĉenon "la nomoj ne kongruas".
La citaĵoj ĉirkaŭ la $ name1 kaj $ name2-variabloj estas gravaj ĉar se la valoro de iu el ili ne estas agordita tiam la skripto ankoraŭ funkcios.
Ekzemple, se $ name1 neniam estis aro, vi komparas "" kun "bob". Sen la citaĵoj vi restos kun = "bob", kiuj klare malsukcesas.
Vi ankaŭ povas uzi la! = Notacion por difini ne egala al la sekva:
se ["$ name1"! = "$ name2"]
02 de 08
Komencanta Gvidilo Al BASH - Komparanta #Tra? O
En la supre ekzemplo la provo komparas la samajn du ŝnurojn kaj demandas la demandon, ke gary venas antaŭ ĉiu en la alfabeto?
Klare la respondo estas ne.
La skripto enkondukas malpli ol operatoro (<). Ĉar malpli ol operatoro ankaŭ estas uzata por redirektado, vi devas eskapi ĝin per slash (\) por tio signifi malpli ol kio estas kial en la supra skripto mi komparis "$ name1" \ <"$ name2".
La malo de malpli ol estas evidente pli granda ol. Anstataŭ uzi \
Ekzemple
se ["$ name1" \> "$ name2"]
03an de 08
Komencanta Gvidilo Al BASH - Komparanta #Tra? O
Se vi volas provi ĉu variablo havas valoron, vi povas uzi la jenan provon:
se [-n $ nomo2]
En la supra skripto mi provis, ĉu $ nomo2 ricevis valoron kaj se ĝi ne faras la mesaĝon "Ne ekzistas bob, neniam iam aperas".
04an de 08
Komencanta Gvidilo Al BASH - Komparanta #Tra? O
En la pasinta diapozitivoj ni kovris ĉu variablo estis agordita aŭ ne. Kelkfoje kvankam variablo povus esti agordita, sed ĝi eble ne valoris.
Ekzemple:
nomo1 = ""
Por provi ĉu variablo havas valoron aŭ ne (tio estas, longeco de nulo) uzu -z kiel sekvas:
se [-z $ name1]
En la supra skripto mi starigis $ nomon1 ĝis nulo longo kaj poste komparis ĝin per -z. Se $ name1 estas nulo longa, la mesaĝo "Gary eliris por la vespero" estos montrata.
05 de 08
Komencanta Gvidilo Al BASH - Komparanta Nombrojn
Ĝis nun ĉiuj komparoj estis por kordoj. Kio pri komparado de nombroj?
La supre skripto montras ekzemplon de komparado de du nombroj:
#! / bin / bash
a = 4
b = 5se [$ a = $ b]
tiam
eĥo "4 = 5"
alia
eĥo "4 ne egala 5"
fi
Por agordi variablon esti nombro, simple starigu ĝin sen citiloj. Vi povas tiam kompari la nombrojn kun egala signo.
Mi preferas tamen uzi la sekvan telefoniston kompari du numerojn:
Se [$ a -eq $ b]
06 de 08
Komencanta Gvidilo Al BASH - Komparanta Nombrojn
Se vi volas kompari ĉu nombro estas malpli ol alia nombro, vi povas uzi malpli ol operatoro (<). Kiel kun ŝnuroj vi devas eskapi la malpli ol operacion kun slash. (\ <).
Pli bona maniero komparante nombrojn estas uzi la jenan notacion anstataŭe:
- Malpli ol -lt
- Malpli ol aŭ egala al -le
- Plej granda ol-gv
- Pli granda ol aŭ egala al -ge
Ekzemple:
se [$ a -lt $ b]
se [$ a -le $ b]
se [$ a -ge $ b]
se [$ a -gt $ b]
07 de 08
Komencanta Gvidilo Al BASH - Komparanta Nombrojn
Fine por ĉi tiu gvidilo, se vi volas provi, ĉu du nombroj estas malsamaj, vi povas uzi ĉu malpli ol kaj pli granda ol operatoroj kune (<>) aŭ -ne kiel sekvas:
se [$ a <> $ b]
se [$ a -ne $ b]
08 de 08
Komencanta Gvidilo Al BASH - Komparilaj Funkciistoj - Resumo
Se vi perdis la unuajn tri partojn de ĉi tiu gvidilo, vi povas trovi ilin per klakado sur la jenaj ligiloj:
En la venonta parto de la gvidilo mi kovros aritmetikon.