Hoe kinne gebrûksbetingsten brûke yn in Bash-skript

It testbehearder kin brûkt wurde op de Linux-kommandorigel om ien elemint tsjin in oar te fergelykjen, mar it wurdt mear brûkber brûkt yn BASH-shell-skripts as in bedrach fan betingsten dy't logika en programma-stream kontrolearje.

In Basic foarbyld

Jo kinne dizze kommando ienfâldig besykje troch in terminalfinster te iepenjen .

test 1 -eq 2 && echo "ja" || echo "nee"

It boppesteande kommando kin sa ferdield wurde:

Yn essinsje is it kommando 1 oant 2 fergelike en se passe by de echo "ja" -Antjefte wurdt útfierd, dy 'ja' jout, en as se net passe by de echo "no" -Antjefte wurdt útfierd dy't 'gjin' werjûn.

Fergelykjen fan nûmers

As jo ​​eleminten fergelykje dy't as getallen parseare, kinne jo de folgjende ferwizingsoperators brûke:

Foarbylden:

test 1 -eq 2 && echo "ja" || echo "nee"

(lit gjin "no" oan it skerm sjen, om't 1 net lyk is 2)

test 1 -ge 2 && echo "ja" || echo "nee"

(lit gjin "no" oan it skerm sjen, om't 1 net grutter is of 2)

test 1 -t 2 && echo "ja" || echo "nee"

(lit gjin "no" oan it skerm sjen, om't 1 net grutter is as 2)

test 1 -le 2 && echo "ja" || echo "nee"

(jout "ja" oan it skerm omdat 1 minder as of 2 is)

test 1 -tal 2 && echo "ja" || echo "nee"

(jout "ja" oan it skerm omdat 1 minder as of 2 is)

test 1 -n 2 && echo "ja" || echo "nee"

(lit jo "ja" oan it skerm sjen, om't 1 net lyk is 2)

Fergelykje tekst

As jo ​​eleminten fergelykje as strings, kinne jo de folgjende ferwizingsoperators brûke:

Foarbylden:

test "string1" = "string2" && echo "ja" || echo "nee"

(lit gjin "no" oan it skerm sjen, om't "string1" net equal is "string2")

test "string1"! = "string2" && echo "ja" || echo "nee"

(jout "ja" nei it skerm omdat "string1" net lyk is "string2")

test -n "string1" && echo "ja" || echo "nee"

(jout "ja" nei it skerm omdat "string1" in stringlange grutter dan nul hat)

test -z "string1" && echo "ja" || echo "nee"

(lit gjin "no" oan it skerm sjen, om't "string1" in stringlange grutter dan nul hat)

Fergelykjen fan triemmen

As jo ​​de bestannen befetsje, kinne jo de folgjende ferwizingsoperators brûke:

Foarbylden:

test / path / to / file1 -n / path / to / file2 && echo "ja"

(As triem1 is nijere as file2 dan sil it wurd "ja" werjûn wurde)

test -e / path / to / file1 && echo "ja"

(as bestân1 bestiet it wurd "ja" sil werjûn wurde)

test -O / paad / nei / file1 && echo "ja"

(as jo bestân1 hawwe dan it wurd "ja" werjûn)

Terminology

Mearfâldich betingsten fergelykje

Hjirmei hat alles alles ien tsjin in oar fergeliking, mar wat as jo twa betingsten fergelykje wolle.

Bygelyks, as in dier hat 4 skonken en giet "moo" it is wierskynlik in ko. Einichste kontrôle foar 4 skonken jouwt gjin garânsje dat jo in ko net hawwe, mar kontrolearje it lûd dat it makket.

Om beide betingsten op ien kear de folgjende statement te brûken:

test 4 -eq 4 -a "moo" = "moo" && echo "it is in koe" || echo "it is gjin ko"

It kaaipart is hjir de -a dy't stiet foar en.

Der is in bettere en meast brûkte manier fan itselde test en dat is sa:

test 4 -eq 4 && test "moo" = "moo" && echo "it is in koe" || echo "it is gjin ko"

In oare test dy't jo wolle wolle meitsje, fertsjinnet twa ferklearrings en as ien fan 'e echte útfier in string is. As jo ​​wolle kontrolearje dat in triem mei de namme "file1.txt" bestiet, of in triem neamd "file1.doc" bestiet kinne jo it folgjende kommando brûke

test -e file1.txt -o -e file1.doc && echo "file1 bestiet" || echo "file1 bestiet net"

It kaaipart is hjir de -o dy't stiet of of.

Der is in bettere en meast brûkte manier fan itselde test en dat is sa:

test -e file1.txt || test -e file1.doc && echo "bestân1 bestiet" || echo "file1 bestiet net"

Eliminating The Test Keyword

Jo hawwe eins net it wurdtest te brûken om it fergeliking út te fieren. Alles wat jo dwaan moatte, is de ferklearring yn fjouwerkant klanken lykas folget:

[-e file1.txt] && echo "bestân1 bestiet" || echo "file1 bestiet net"

De [en] betsjut benammen as deselde test.

No wite jo dat jo ferbetterje kinne op it fergelykje meardere betingsten as folgjend:

[4 -eq 4] && ["moo" = "moo"] && echo "it is in koe" || echo "it is gjin ko"

[-e file1.txt] || [-e file1.doc] && echo "bestân1 bestiet" || echo "file1 bestiet net"

Gearfetting

It testkommando is nuttich yn skripts, om't jo de wearde fan ien fariabele tsjin in oar en kontrôleprogramma-flug besjen kinne. Op de standert kommando-rigel kinne jo it brûke om te hifkjen oft in bestân bestiet