Kiel Uzi Testekondiĉojn Ene de Bash-Skripto

La provo-komando povas esti uzata sur la Linukso-komandlinio por kompari unu elementon kontraŭ alia sed ĝi estas pli ofte uzita en BASH-ŝkruc-skriptoj kiel parto de kondiĉaj deklaroj, kiuj regas la logikon kaj programon.

Baza Ekzemplo

Vi povas provi ĉi tiujn komandojn simple malfermante fina stacion .

provo 1 -qq 2 && eĥo "jes" || eĥo "ne"

La supre komando povas esti detruita kiel sekvas:

En esenco, la komando komparas 1 ĝis 2 kaj ili kongruas kun la eĥo "jes" deklaro ekzekutita, kiu montras "jes" kaj se ili ne kongruas la eĥo "neniu" deklaro ekzekutas, kiu montras "ne".

Komparante Nombroj

Se vi komparas elementojn, kiuj analizas la numerojn, vi povas uzi la sekvajn komparejn operaciojn:

Ekzemploj:

provo 1 -qq 2 && eĥo "jes" || eĥo "ne"

(montras "ne" al la ekrano ĉar 1 ne egalas 2)

provo 1-a 2 && eĥo "jes" || eĥo "ne"

(montras "ne" al la ekrano ĉar 1 ne estas pli granda aŭ egala al 2)

provo 1-gt 2 && eĥo "jes" || eĥo "ne"

(montras "ne" al la ekrano ĉar 1 ne estas pli granda ol 2)

provo 1 -le 2 && eĥo "jes" || eĥo "ne"

(montras "jes" al la ekrano ĉar 1 estas malpli ol aŭ egala al 2)

provo 1 -lt 2 && eĥo "jes" || eĥo "ne"

(montras "jes" al la ekrano ĉar 1 estas malpli ol aŭ egala al 2)

provo 1 -ne 2 && eĥo "jes" || eĥo "ne"

(montras "jes" al la ekrano ĉar 1 ne egalas 2)

Komparanta Tekston

Se vi komparas elementojn, kiuj analizas kiel ŝnuroj, vi povas uzi la sekvajn komparejn operaciojn:

Ekzemploj:

provu "string1" = "string2" && eĥo "jes" || eĥo "ne"

(montras "ne" al la ekrano ĉar "string1" ne egala "string2")

provu "string1"! = "string2" && eĥo "jes" || eĥo "ne"

(montras "jes" al la ekrano ĉar "string1" ne egala "string2")

provo -n "string1" && eĥo "jes" || eĥo "ne"

(montras "jes" al la ekrano ĉar "string1" havas pli longan ŝnuron pli ol nulo)

provo -z "string1" && eĥo "jes" || eĥo "ne"

(montras "ne" al la ekrano ĉar "string1" havas pli longan ŝnuron pli ol nulo)

Komparante Dosierojn

Se vi komparas dosierojn, vi povas uzi la sekvajn kompilajn operaciojn:

Ekzemploj:

provo / path / to / file1 -n / path / to / file2 && eĥo "jes"

(Se file1 estas pli nova ol dosiero2 tiam la vorto "jes" estos montrata)

provo -e / path / to / file1 && eĥo "jes"

(se file1 ekzistas la vorto "jes" estos montrata)

provo -O / path / to / file1 && eĥo "jes"

(se vi posedas dosieron1 tiam la vorto "jes" estas montrata)

Terminologio

Komparante Multoblajn Kondiĉojn

Ĝis nun ĉio komparas unu aferon kontraŭ alia sed kio, se vi volas kompari du kondiĉojn.

Ekzemple, se besto havas 4 krurojn kaj iras "moo" ĝi verŝajne estas bovino. Simple kontrolanta por 4 faltoj ne garantias, ke vi havas bovinon, sed kontrolas la sonon, kiun ĝi verŝajne faras.

Por provi ambaŭ kondiĉojn tuj uzu la jenan deklaron:

provo 4 -qq 4 -a "moo" = "moo" && eĥo "ĝi estas bovino" || eĥo "ĝi ne estas bovino"

La ŝlosila parto ĉi tie estas la -a kiu staras por kaj.

Estas pli bona kaj pli komune uzita maniero fari la saman teston kaj jen estas:

provo 4 -eq 4 && test "moo" = "moo" && echo "ĝi estas bovino" || eĥo "ĝi ne estas bovino"

Alia provo, kiun vi volas fari, komparas du deklarojn kaj se ĉu estas vera eligo, ĉeno. Ekzemple, se vi volas kontroli, ke ekzistas dosiero nomata "file1.txt" aŭ ekzistas dosiero nomata "file1.doc", vi povas uzi la jenan komandon

test -e file1.txt -o -e file1.doc && echo "file1 exists" || eĥo "file1 does not exist"

La ŝlosila parto ĉi tie estas la -o kiu staras por aŭ.

Estas pli bona kaj pli komune uzita maniero fari la saman teston kaj jen estas:

provo -e file1.txt || test -e file1.doc && echo "file1 exists" || eĥo "file1 does not exist"

Forigi La Teston-Ŝlosilvorton

Vi ne bezonas uzi la vortan provon por realigi la komparo. Ĉio, kion vi devas fari estas alklaki la deklaron en kvadrata krampoj kiel sekvas:

[-e file1.txt] && echo "file1 exists" || eĥo "file1 does not exist"

La [kaj] esence signifas la saman provon.

Nun vi scias, ke vi povas plibonigi komparante multajn kondiĉojn kiel sekvas:

[4-aq 4] && ["moo" = "moo"] && eĥo "ĝi estas bovino" || eĥo "ĝi ne estas bovino"

[-e dosiero1.txt] || [-e file1.doc] && echo "file1 exists" || eĥo "file1 does not exist"

Resumo

La provo-komando estas pli utila en skriptoj ĉar vi povas provi la valoron de unu variablo kontraŭ alia kaj kontrolo-programo fluo. Sur la norma komandlinio, vi povas uzi ĝin por provi ĉu ekzistas dosiero aŭ