Comanda de test poate fi folosită pe linia de comandă Linux pentru a compara un element cu altul, dar este mai frecvent folosită în scripturile shell BASH, ca parte a instrucțiunilor condiționale care controlează logica și fluxul de programe.
Un exemplu de bază
Puteți încerca aceste comenzi pur și simplu prin deschiderea unei ferestre terminale.
test 1 -eq 2 && echo "da" || echo "nu"
Comanda de mai sus poate fi defalcată după cum urmează: În esență, comanda compară 1 la 2, iar dacă se potrivesc, se execută instrucțiunea "da" care afișează "da" și dacă nu se potrivesc, se execută instrucțiunea "nu" care afișează "nu". Dacă comparați elemente care parsează ca numere, puteți utiliza următorii operatori de comparație: Exemple test 1 -eq 2 && echo "da" || echo "nu"
(afișează "nu" pe ecran deoarece 1 nu este egal 2) test 1 -ge 2 && echo "da" || echo "nu"
(afișează "nu" pe ecran deoarece 1 nu este mai mare sau egal cu 2) test 1 -gt 2 && echo "da" || echo "nu"
(afișează "nu" pe ecran deoarece 1 nu este mai mare de 2) test 1 -lea 2 && echo "da" || echo "nu"
(afișează "da" pe ecran deoarece 1 este mai mică sau egală cu 2) test 1 -lt 2 && echo "da" || echo "nu"
(afișează "da" pe ecran deoarece 1 este mai mică sau egală cu 2) test 1 -ne 2 && echo "da" || echo "nu"
(afișează "da" pe ecran deoarece 1 nu este egal 2) Dacă comparăți elemente care parsează ca șiruri de caractere, puteți utiliza următorii operatori de comparație: Exemple test "string1" = "string2" && echo "da" || echo "nu"
(afișează "nu" pe ecran deoarece "string1" nu este egal cu "string2") test "string1"! = "string2" && echo "da" || echo "nu"
(afișează "da" pe ecran deoarece "string1" nu este egal cu "string2") test -n "string1" && echo "da" || echo "nu"
(afișează "da" pe ecran deoarece "string1" are o lungime de șir mai mare decât zero) test -z "string1" && echo "da" || echo "nu"
(afișează "nu" pe ecran deoarece "string1" are o lungime de șir mai mare decât zero) Dacă comparăți fișiere, puteți utiliza următorii operatori de comparație: Exemple test / cale / către / file1 -nt / cale / către / file2 && echo "da"
(Dacă fișierul 1 este mai nou decât fișierul2, se va afișa cuvântul "da") test -e / path / to / file1 && echo "da"
(dacă există fișierul1, va fi afișat cuvântul "da") test -O / cale / la / fișier1 & & echo "da"
(dacă dețineți fișierul1 atunci cuvântul "da" este afișat ") Terminologie Până acum, totul a comparat un lucru cu altul, dar dacă vrei să compari două condiții? De exemplu, dacă un animal are 4 picioare și merge "moo", este probabil o vacă. Pur și simplu verificarea pentru 4 picioare nu garantează că aveți o vacă, dar verificați sunetul pe care îl face cu siguranță. Pentru a testa simultan ambele condiții, utilizați următoarea declarație: test 4 -eq 4 -a "moo" = "moo" & & echo "este o vacă" || echo "nu este o vacă"
Partea esențială aici este -a care reprezintă și . Există o modalitate mai bună și mai frecvent utilizată de a efectua același test și care este după cum urmează: test 4 -eq 4 && test "moo" = "moo" & & echo "este o vacă" || echo "nu este o vacă"
Un alt test pe care ar trebui să-l faceți este să comparăți două instrucțiuni și dacă oricare dintre acestea este adevărat, extrageți un șir. De exemplu, dacă doriți să verificați dacă există un fișier numit "file1.txt" sau dacă există un fișier numit "file1.doc", puteți utiliza următoarea comandă: test -e file1.txt -o -e fișier1.doc && echo "fișierul 1 există" || echo "file1 nu există"
Partea esențială aici este -o care reprezintă sau . Există o modalitate mai bună și mai frecvent utilizată de a efectua același test și care este după cum urmează: test -e file1.txt || test -e file1.doc && echo "fișierul1 există" || echo "file1 nu există" De fapt, nu trebuie să utilizați testul de cuvinte pentru a efectua comparația. Tot ce trebuie să faceți este să închideți instrucțiunea în paranteze pătrate după cum urmează: -e fișier1.txt && echo "fișierul 1 există" || echo "file1 nu există"
Și înseamnă în principiu același lucru ca și testul. Acum știți acest lucru, puteți îmbunătăți compararea mai multor condiții, după cum urmează: 4 -eq 4 && "moo" = "moo" & & echo "este o vacă" || echo "nu este o vacă"-e file1.txt || -e fișier1.doc && echo "fișierul 1 există" || echo "file1 nu există" Comanda de testare este mai utilă în scripturi, deoarece puteți testa valoarea unei variabile în raport cu alta și a controla fluxul programului. Pe linia de comandă standard, o puteți folosi pentru a testa dacă există sau nu un fișier.
Comparând numerele
Comparând textul
Compararea fișierelor
Compararea condițiilor multiple
Eliminarea cuvintelor cheie de testare
rezumat