Si të përdorni kushtet e testimit brenda një skedari Bash

Komanda e testimit mund të përdoret në linjën e komandës Linux për të krahasuar një element me një tjetër, por është më i zakonshëm që përdoret në skedarët shell BASH si pjesë e deklaratave të kushtëzuara që kontrollojnë logjikën dhe rrjedhën e programit.

Një shembull themelor

Ju mund t'i provoni këto komanda thjesht duke hapur një dritare terminali .

provë 1-eq 2 && echo "po" || echo "jo"

Komanda e mësipërme mund të ndahet si më poshtë:

Në thelb, komanda po e krahason 1 deri në 2 dhe përputhet me echo "yes" është ekzekutuar që tregon "po" dhe nëse ata nuk përputhen me echo "no" ekzekutohet që tregon "jo".

Krahasimi i numrave

Nëse jeni duke krahasuar elemente që analizojnë si numra ju mund të përdorni operatorët krahasues vijues:

shembuj:

provë 1-eq 2 && echo "po" || echo "jo"

(shfaq "jo" në ekran sepse 1 nuk është e barabartë 2)

test 1 -ge 2 && echo "po" || echo "jo"

(tregon "jo" në ekran sepse 1 nuk është më i madh ose i barabartë me 2)

provë 1 -gt 2 && echo "po" || echo "jo"

(tregon "jo" në ekran sepse 1 nuk është më i madh se 2)

provë 1 -le 2 && echo "po" || echo "jo"

(tregon "po" në ekran sepse 1 është më pak se ose e barabartë me 2)

provë 1 -lt 2 && echo "po" || echo "jo"

(tregon "po" në ekran sepse 1 është më pak se ose e barabartë me 2)

test 1 -në 2 && echo "po" || echo "jo"

(tregon "po" në ekran sepse 1 nuk është e barabartë 2)

Krahasimi i tekstit

Nëse po i krahasoni elementet që analizohen si vargje, mund të përdorni operatorët krahasues të mëposhtëm:

shembuj:

test "string1" = "string2" && echo "po" || echo "jo"

(shfaq "jo" në ekran sepse "string1" nuk është e barabartë "string2")

test "string1"! = "string2" && echo "po" || echo "jo"

(shfaq "po" në ekran sepse "string1" nuk është e barabartë "string2")

test -n "string1" && echo "po" || echo "jo"

(shfaq "po" në ekran, sepse "string1" ka një gjatësi prej string më të madhe se zero)

test -z "string1" && echo "po" || echo "jo"

(shfaq "jo" në ekran sepse "string1" ka një gjatësi string më të madhe se zero)

Duke krahasuar dosjet

Nëse po i krahasoni skedarët, mund të përdorni operatorët krahasues në vijim:

shembuj:

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

(Nëse file1 është më i ri se file2 atëherë do të shfaqet fjala "po")

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

(nëse ekziston file1 ekziston fjala "po")

test -O / path / to / file1 && echo "po"

(nëse posedoni skedarin1 atëherë shfaqet fjala "po")

terminologji

Krahasimi i kushteve të shumëfishta

Deri tani çdo gjë ka qenë duke krahasuar një gjë me një tjetër, por çka nëse doni të krahasoni dy kushte.

Për shembull, nëse një kafshë ka 4 këmbë dhe shkon "moo", ndoshta është një lopë. Thjesht duke kontrolluar për 4 këmbë nuk garanton se ke një lopë, por kontrollon zërin që bën me siguri.

Për të testuar të dy kushtet në të njëjtën kohë përdorni deklaratën e mëposhtme:

provë 4-eq 4 -a "moo" = "moo" && echo "kjo është një lopë" || jehonë "nuk është një lopë"

Pjesa kryesore këtu është a-cila qëndron për dhe.

Ka një mënyrë më të mirë dhe më të përdorur për kryerjen e testit të njëjtë dhe kjo është si vijon:

provë 4-eq 4 && test "moo" = "moo" && echo "kjo është një lopë" || jehonë "nuk është një lopë"

Një tjetër provë që mund të dëshironi të bëni është të krahasoni dy deklarata dhe nëse është e vërtetë, prodhoni një varg. Për shembull, nëse dëshironi të verifikoni se ekziston një skedar me emrin "file1.txt" ose një skedar i quajtur "file1.doc" ju mund të përdorni komandën e mëposhtme

test -e file1.txt -o -e file1.doc && echo "file1 ekziston" || echo "file1 nuk ekziston"

Pjesa kryesore këtu është -o që qëndron për ose.

Ka një mënyrë më të mirë dhe më të përdorur për kryerjen e testit të njëjtë dhe kjo është si vijon:

test -e file1.txt || test -e file1.doc && echo "file1 ekziston" || echo "file1 nuk ekziston"

Eliminimi i Fjalorit të Testimit

Ju nuk duhet të përdorni testin e fjalës për të kryer krahasimin. Të gjithë ju duhet të bëni është të bashkangjitni deklaratën në kllapa katrore si më poshtë:

[-e file1.txt] && echo "file1 ekziston" || echo "file1 nuk ekziston"

[Dhe] në thelb do të thotë njëjtë si provë.

Tani e dini këtë që mund të përmirësoni krahasimin e kushteve të shumëfishta si më poshtë:

[4-eq 4] && ["moo" = "moo"] && echo "është një lopë" || jehonë "nuk është një lopë"

[-e file1.txt] || [-e file1.doc] && echo "file1 ekziston" || echo "file1 nuk ekziston"

përmbledhje

Komanda e testimit është më e dobishme në skriptet sepse mund ta provosh vlerën e një ndryshoreje kundrejt një tjetër dhe rrjedhën e programit të kontrollit. Në linjën e komandës standarde, mund ta përdorni për të provuar nëse një skedar ekziston ose