Com s'utilitzen les condicions de prova dins d'un script de comprovació

L'ordre de prova es pot utilitzar a la línia de comandaments de Linux per comparar un element amb un altre, però s'utilitza més sovint en els scripts del shell de BASH com a part de les frases condicionals que controlen la lògica i el flux del programa.

Un exemple bàsic

Podeu provar aquests comandaments simplement obrint una finestra de terminal .

prova 1 -eq 2 i & echo "sí" || eco "no"

L'ordre anterior es pot desglossar de la manera següent:

En essència, la comanda està comparant 1 a 2 i coincideixen amb la instrucció echo "yes" que s'executa que mostra "sí" i si no coincideixen amb la instrucció "no", s'executa que mostra "no".

Comparant números

Si comparem elements que analitzen com a números, podeu utilitzar els següents operadors de comparació:

Exemples:

prova 1 -eq 2 i & echo "sí" || eco "no"

(mostra "no" a la pantalla perquè 1 no és igual a 2)

prova 1 -ge 2 i & echo "sí" || eco "no"

(mostra "no" a la pantalla perquè 1 no és major ni igual a 2)

prova 1 -gt 2 i & echo "sí" || eco "no"

(mostra "no" a la pantalla perquè 1 no és superior a 2)

prova 1 -le 2 i & echo "sí" || eco "no"

(mostra "sí" a la pantalla perquè 1 és menor o igual que 2)

prova 1 -lt 2 i & echo "sí" || eco "no"

(mostra "sí" a la pantalla perquè 1 és menor o igual que 2)

prova 1-ne 2 i & echo "sí" || eco "no"

(mostra "sí" a la pantalla perquè 1 no és igual a 2)

Comparació de text

Si comparem elements que analitzen com a cadenes, podeu utilitzar els següents operadors de comparació:

Exemples:

prova "string1" = "string2" && echo "yes" || eco "no"

(mostra "no" a la pantalla perquè "string1" no és igual a "string2")

prova "string1"! = "string2" && echo "yes" || eco "no"

(mostra "sí" a la pantalla perquè "string1" no és igual a "string2")

test -n "string1" && echo "yes" || eco "no"

(mostra "sí" a la pantalla perquè "string1" té una longitud de cadena superior a zero)

prova -z "string1" && echo "yes" || eco "no"

(mostra "no" a la pantalla perquè "string1" té una longitud de cadena superior a zero)

Comparant fitxers

Si comparem fitxers, podeu utilitzar els següents operadors de comparació:

Exemples:

test / path / to / file1 -n / path / to / file2 i & echo "yes"

(Si el fitxer 1 és més nou que el fitxer2, es mostrarà la paraula "sí")

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

(si file1 existeix, la paraula "sí" es mostrarà)

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

(si teniu el fitxer 1, es mostrarà la paraula "sí")

Terminologia

Comparant diverses condicions

Fins aquí tot ha estat comparant una cosa amb l'altra, però si voleu comparar dues condicions.

Per exemple, si un animal té 4 potes i va "moo" és probablement una vaca. Simplement, revisar 4 potes no garanteix que tingueu una vaca, sinó que comprova el so que segurament ho fa.

Per comprovar ambdues condicions alhora, utilitzeu la següent instrucció:

prova 4 -eq 4 -a "moo" = "moo" & & echo "és una vaca" || ressò "no és una vaca"

La part clau aquí és la -a que representa i.

Hi ha una manera millor i més usada de fer la mateixa prova i això és el següent:

prova 4 -eq 4 && test "moo" = "moo" & & echo "és una vaca" || ressò "no és una vaca"

Una altra prova que vulgueu fer és comparar dues expressions i, si és vertader, sortir una cadena. Per exemple, si voleu comprovar que existeix un fitxer anomenat "file1.txt" o existeix un fitxer anomenat "file1.doc", podeu utilitzar l'ordre següent

test -e file1.txt -o -e file1.doc && echo "file1 exists" || echo "file1 does not exist"

La part clau aquí és la -o que significa o.

Hi ha una manera millor i més usada de fer la mateixa prova i això és el següent:

test -e file1.txt || test -e file1.doc && echo "file1 exists" || echo "file1 does not exist"

Eliminació de la paraula clau de prova

De fet, no cal utilitzar la prova de paraules per realitzar la comparació. Tot el que heu de fer és incloure la declaració entre claudàtors de la següent manera:

[-e file1.txt] && echo "file1 exists" || echo "file1 does not exist"

El [i] bàsicament significa el mateix que el test.

Ara sabeu que podeu millorar en comparar diverses condicions de la següent manera:

[4-eq 4] && ["moo" = "moo"] && echo "és una vaca" || ressò "no és una vaca"

[-e file1.txt] || [-e file1.doc] && echo "file1 exists" || echo "file1 does not exist"

Resum

L'ordre de prova és més útil en els scripts perquè podeu provar el valor d'una variable contra un altre i controlar el flux del programa. A la línia d'ordres estàndard, podeu utilitzar-lo per comprovar si un fitxer existeix o