Pruebas de condición comunes para shell
Aquí hay algunas tablas de prueba de condición de uso común en shells para su referencia y referencia
Diferentes tipos de pruebas
Hay tres tipos de pruebas que se pueden realizar en Bash:
- Cadena de prueba
- Número de prueba
- Archivo de prueba
Cadena de prueba
condición | significado |
---|---|
$ cadena1 = $ cadena2 | Si las dos cadenas son iguales. Shell distingue entre mayúsculas y minúsculas, por lo que A y a no son lo mismo. |
$ cadena1! = $ cadena2 | Si las dos cadenas son diferentes. |
-z $ cadena | Si la cadena de caracteres está vacía. z es la primera letra de cero, que significa "cero" en inglés. |
-n $ cadena | Si la cadena no está vacía. n es la primera letra del inglés not, que significa "not" en inglés. |
ejemplo:
#!/bin/bash
if [ -z $1 ]
then
echo "No parameter"
else
echo "There is at least one parameter"
fi
Cadena de prueba
condición | significado |
---|---|
$ num1 -eq $ num2 | Si los dos números son iguales. No es lo mismo que el símbolo (=) utilizado para determinar la cadena de caracteres. eq es la abreviatura de igual, que significa "igual" en inglés. |
$ num1 -ne $ num2 | Si los dos números son diferentes. ne es la abreviatura de no igual, que significa "no igual" en inglés. |
$ num1 -lt $ num2 | Si el número num1 es menor que num2. Es la abreviatura de lower than, que significa "menos que" en inglés. |
$ num1 -le $ num2 | Si el número num1 es menor o igual que num2. le es la abreviatura de lower o equal, que significa "menor o igual a" en inglés. |
$ num1 -gt $ num2 | Si el número num1 es mayor que num2. gt es la abreviatura de mayor que, que significa "mayor que" en inglés. |
$ num1 -ge $ num2 | Si el número num1 es mayor o igual que num2. Ge es la abreviatura de mayor o igual, que significa "mayor o igual que" en inglés. |
ejemplo:
#!/bin/bash
if [ $1 -ge 10 ]
then
echo "You have entered a number greater than 10 or equal to 10"
else
echo "You have entered a number lower than 10"
fi
Archivo de prueba
condición | significado |
---|---|
-e $ archivo | Si el archivo existe. e es la primera letra de existir, que significa "existir". |
-d $ archivo | Si el archivo es un directorio. Como todo en Linux es un archivo, un directorio también es una especie de archivo. d es la primera letra del directorio, que significa "directorio". |
-f $ archivo | Si el archivo es un archivo. f es la primera letra del archivo, que significa "archivo". |
-L $ archivo | Si el archivo es un archivo de enlace simbólico. L es la primera letra del enlace, que significa "enlace". |
-r $ archivo | Si el archivo es legible. r es la primera letra de legible, que significa "legible". |
-w $ archivo | Si se puede escribir en el archivo. w es la primera letra de la escritura, que significa "escribible". |
-x $ archivo | Si el archivo es ejecutable. x es la primera letra del ejecutable, que significa "ejecutable". |
$ archivo1 -nt $ archivo2 | Si el archivo file1 es más reciente que file2. nt es la abreviatura de más nuevo que, que significa "más nuevo". |
$ archivo1 -desde $ archivo2 | Si el archivo file1 es más antiguo que file2. ot es la abreviatura de mayor que, que significa "mayor". |
ejemplo:
#!/bin/bash
read -p 'Enter a directory : ' file
if [ -d $file ]
then
echo "$file is a directory"
else
echo "$file is not a directory"
fi
———————————————————————————————————————————————
Referencia: Enciclopedia de programación de scripts de shell y línea de comandos de Linux / 43 Cuando se manifiesta la condición, Shell no está satisfecho