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ë:
- test - kjo do të thotë që jeni gati të bëni një krahasim
- 1 - elementi i parë që do të krahasoni
- -eq (si po e krahasoni, në këtë rast, po testoni nëse një numër është i barabartë me një tjetër)
- 2 - elementin që po e krahasoni elementin e parë përsëri
- && - kryeni deklaratën e mëposhtme nëse rezultati është i vërtetë
- echo "po" - komanda për të kandiduar nëse krahasimi kthehet i vërtetë
- || - kryeni deklaratën e mëposhtme nëse rezultati është i rremë
- echo "no" - komanda për të kandiduar nëse krahasimi kthehet i rremë
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:
- -eq - ka vlerë 1 vlerë të barabartë 2
- -ge - është vlera 1 më e madhe ose e barabartë me vlerën 2
- -gt - është vlera 1 më e madhe se vlera 2
- -le - është vlera 1 më pak se ose e barabartë me vlerën 2
- -lt - është vlera 1 më pak se vlera 2
- -ne - ka vlerën 1 jo vlerë të barabartë 2
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:
- = - bën vargun 1 ndeshje string 2
- ! = - është vargu 1 i ndryshëm nga vargu 2
- -n - është gjatësia e vargut më e madhe se 0
- -z - është gjatësia e vargut 0
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:
- -ef - A kanë skedarët të njëjtat pajisje dhe numra inoda (a janë të njëjtat skedarë)
- -nt - Është skedari i parë më i ri se skedari i dytë
- -ot - Është skedari i parë më i vjetër se skedari i dytë
- -b - Dosja ekziston dhe është bllok i veçantë
- -c - Dosja ekziston dhe është karakter i veçantë
- -d - Dosja ekziston dhe është një direktori
- -e - Dosja ekziston
- -f - Dosja ekziston dhe është një skedar i rregullt
- -g - Dosja ekziston dhe ka numrin e caktuar të grupit
- -G - Dosja ekziston dhe pronari nga grupi i përdoruesit
- -h - Dosja ekziston dhe është një lidhje simbolike
- -k - Dosja ekziston dhe ka setin e vet të ngjitës
- -L - E njëjta gjë si -h
- -O - Dosja ekziston që ju jeni pronari
- -p - Dosja ekziston dhe është një tub me emër
- -r - Dosja ekziston dhe është e lexueshme
- -s - Dosja ekziston dhe ka një madhësi më të madhe se zero
- -S - Dosja ekziston dhe është një fole
- -t - Përshkrimi i skedarit hapet në një terminal
- -u - Ekziston skeda dhe caktimi i set-user-id bit
- -w - Dosja ekziston dhe është e shkrueshme
- -x - Dosja ekziston dhe është e ekzekutueshme
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
- Blloku i veçantë - skedari është një pajisje blloku që do të thotë se të dhënat lexohen në blloqe të bytes. Këto janë përgjithësisht skedarë të pajisjes siç janë hard disqet.
- Karakteri i posaçëm - Skedari veprohet menjëherë kur ju shkruani dhe zakonisht është një pajisje si një port serial
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