Komencanta Gvidilo Al BASH - Komparanta Aferojn

01an de 08

Komencanta Gvidilo Al BASH - Komparanta Aferojn

BASH Lernilo - Komparante Ŝtonojn.

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

BASH Lernilo - Komparante Ŝtonojn.

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

BASH Lernilo - Komparante Ŝtonojn.

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

BASH Lernilo - Komparante Ŝtonojn.

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

BASH Lernilo - 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 = 5

se [$ 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

BASH Lernilo - 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:

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

BASH Lernilo - 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.