Ou ka itilize kòmandman nan egzamen an sou liy lan lòd Linux pou konpare yon sèl eleman kont yon lòt men li pi souvan itilize nan Scripts koki BASH kòm yon pati nan deklarasyon kondisyonèl ki kontwòl lojik ak koule pwogram lan.
Yon egzanp Debaz
Ou ka eseye kòmandman sa yo tou senpleman pa louvri yon fenèt tèminal .
tès 1 -eq 2 && echo "wi" || eko "non"
Ka lòd ki anwo la a ap kase jan sa a:
- tès - sa vle di ou se sou fè yon konparezon
- 1 - premye eleman ou pral konpare
- -eq (ki jan ou konpare, nan ka sa a, w ap fè tès si yon nimewo egal yon lòt)
- 2 - eleman ou konpare premye eleman an ankò
- && - kouri deklarasyon sa a si rezilta a se verite
- Eko "wi" - lòd la nan kouri si konparezon an retounen vre
- || - kouri deklarasyon sa a si rezilta a se fo
- eko "non" - lòd la nan kouri si konparezon an retounen fo
Nan sans, lòd la konpare 1 a 2 epi yo matche ak repons lan se "wi" deklarasyon ki montre "repons lan se wi" epi si yo pa matche ak repons lan "pa gen okenn" egzekite ki montre "non".
Konpare nimewo yo
Si ou konpare eleman ki parse kòm nimewo ou ka itilize operatè konparezon sa yo:
- -eq - fè valè 1 valè egal 2
- -ge - se valè 1 pi gran oswa egal a valè 2
- -gt - se valè 1 pi gran pase valè 2
- -le - se valè 1 mwens ke oswa egal a valè 2
- -lt - se valè 1 mwens pase valè 2
- -n - fè valè 1 pa egal valè 2
Egzanp:
tès 1 -eq 2 && echo "wi" || eko "non"
(montre "non" ekran an paske 1 pa egal 2)
tès 1 -ge 2 && echo "wi" || eko "non"
(montre "non" ekran an paske 1 pa pi gran oswa egal a 2)
tès 1 -t 2 && eko "wi" || eko "non"
(montre "non" ekran an paske 1 pa pi gran pase 2)
tès 1 -le 2 && eko "wi" || eko "non"
(montre "wi" nan ekran an paske 1 se mwens pase oswa egal a 2)
tès 1 -lt 2 && echo "wi" || eko "non"
(montre "wi" nan ekran an paske 1 se mwens pase oswa egal a 2)
tès 1 -e 2 && echo "wi" || eko "non"
(montre "wi" nan ekran an paske 1 pa egal 2)
Konpare tèks
Si ou konpare eleman ki parse kòm strings ou ka itilize operatè konparezon sa yo:
- = - fisèl fisèl koresponn ak 1
- ! = - se fisèl 1 diferan nan fisèl 2
- -n - se longè a fisèl ki pi konsekan pase 0
- -z - se longè a fisèl 0
Egzanp:
tès "string1" = "string2" && eko "wi" || eko "non"
(montre "non" nan ekran an paske "string1" pa egal "string2")
tès "string1"! = "string2" && echo "wi" || eko "non"
(montre "wi" nan ekran an paske "string1" pa egal "string2")
tès -n "string1" && echo "wi" || eko "non"
(montre "wi" nan ekran an paske "string1" gen yon longè fisèl ki pi konsekan pase zewo)
tès -z "string1" && echo "wi" || eko "non"
(montre "non" nan ekran an paske "string1" gen yon longè fisèl ki pi konsekan pase zewo)
Konpare dosye yo
Si ou konpare dosye ou ka itilize operatè konparezon sa yo:
- -ef - Èske dosye yo gen aparèy la menm ak nimewo inode (yo se dosye a menm)
- -Nan - Èske dosye a premye plus pase dosye a dezyèm fwa
- -Ou - Èske dosye a premye ki pi gran pase dosye a dezyèm fwa
- -b - Fichye a egziste e se blòk espesyal
- -c - dosye a egziste e se karaktè espesyal
- -d - Fichye a egziste e se yon anyè
- -e - Fichye a egziste
- -f - Fichye a egziste epi li se yon dosye regilye
- -g - Fichye a egziste e li gen nimewo gwoup la espesifye
- -G - Fichye a egziste ak pwopriyetè pa gwoup itilizatè a
- -h - Fichye a egziste e se yon lyen senbolik
- -k - Fichye a egziste epi li gen ti jan kolan ti kras li yo
- -L - menm jan ak -h
- -O - Fichye a egziste ou se mèt kay la
- -p - Fichye a egziste e se yon tiyo rele
- -r - Fichye a egziste ak se lizib
- -s - Fichye a egziste e li gen yon gwosè ki pi konsekan pase zewo
- -S - Fichye a egziste e li se yon priz
- -t - Se deskriptè a louvri sou yon tèminal
- -u - Fichye a egziste ak ti jan nan seri-itilizatè-id mete
- -w - Fichye a egziste e se ekriti
- -x - Fichye a egziste epi li se ègzèkutabl
Egzanp:
tès / chemen / a / file1 -n / chemen / to / file2 && eko "wi"
(Si file1 se plus pase file2 Lè sa a, mo "wi" a ap parèt)
tès -e / path / to / file1 && eko "wi"
(si file1 egziste mo "wi" a ap parèt)
tès -O / chemen / a / file1 && eko "wi"
(si ou posede file1 Lè sa a, mo "wi" a parèt ")
Tèminoloji
- Blòk espesyal - Fichye a se yon aparèy blòk ki vle di ke done yo li nan blòk nan bytes. Sa yo se jeneralman dosye aparèy tankou kondui difisil.
- Karaktè espesyal - Fichye a aji sou imedyatman lè ou ekri li epi li se souvan yon aparèy tankou yon seri seri
Konpare kondisyon miltip
Se konsa, lwen tout bagay ki te konpare yon sèl bagay kont yon lòt men sa si ou vle konpare de kondisyon yo.
Pou egzanp, si yon bèt gen 4 pye epi ale "moo" li se pwobableman yon bèf. Senpleman tcheke pou 4 pye pa garanti ke ou gen yon bèf men tcheke son an li fè siman fè.
Pou teste de kondisyon yo yon fwa itilize deklarasyon sa a:
tès 4 -eq 4 -a "moo" = "moo" && eko "li se yon bèf" || eko "li se pa yon bèf"
Pati nan kle isit la se yon -a ki kanpe pou ak.
Gen yon fason pi bon ak pi souvan itilize pou fè tès la menm epi ki se jan sa a:
tès 4 -eq 4 && tès "moo" = "moo" && eko "li se yon bèf" || eko "li se pa yon bèf"
Yon lòt tès ou ta ka vle fè se konpare de deklarasyon yo epi si swa se pwodiksyon vre yon fisèl. Pou egzanp, si ou vle tcheke ke yon dosye ki rele "file1.txt" egziste oswa yon dosye ki rele "file1.doc" egziste ou ka itilize lòd sa a
tès -e file1.txt -o -e file1.doc && eko "file1 egziste" || Eko "file1 pa egziste"
Pati nan kle isit la se -o a ki kanpe pou oswa.
Gen yon fason pi bon ak pi souvan itilize pou fè tès la menm epi ki se jan sa a:
tès -e file1.txt | tès -e file1.doc && eko "file1 egziste" || Eko "file1 pa egziste"
Elimine Keyword egzamen an
Ou pa aktyèlman bezwen itilize tès la mo fè konparezon an. Tout sa ou dwe fè se fèmen deklarasyon an nan parantèz kare yo jan sa a:
[-e file1.txt] && eko "file1 egziste" || Eko "file1 pa egziste"
Nan [ak] fondamantalman vle di menm bagay la tou kòm tès la.
Koulye a, ou konnen sa ou ka amelyore sou konpare kondisyon miltip jan sa a:
[4 -eq 4] && ["moo" = "moo"] && eko "li se yon bèf" || eko "li se pa yon bèf"
[-e file1.txt] | [-e file1.doc] && echo "file1 egziste" || Eko "file1 pa egziste"
Rezime
Tès kòmandman an se pi plis itil nan Scripts paske ou ka teste valè yon sèl varyab kont yon lòt ak kontwòl pwogram koule. Sou liy lan lòd estanda, ou ka itilize li nan tès si yon dosye egziste oswa