Comando de prueba de Bash

Comando de prueba de Bash
En Bash Shell, el comando de prueba compara un elemento con otro y devuelve verdadero o falso. En Bash Scripting, el comando de prueba es una parte integral de las declaraciones condicionales que controlan la lógica y el flujo del programa.

Esta guía demuestra cómo usar el comando de prueba bash.

Comando de prueba

El comando de prueba toma un EXPRESIÓN como argumento. Después de calcular la expresión, la prueba devuelve un valor a la variable bash "$?". Si el valor es 0, entonces la evaluación de la expresión fue verdadera. Si el valor es 1, entonces la evaluación de la expresión fue falsa.

Hay dos sintaxis para usar el comando de prueba.

$ Test Expression
$ [Expresión]

Tenga en cuenta que en el caso de "[", hay un espacio en ambos extremos de la EXPRESIÓN.

Uso de la prueba

Aquí hay un breve ejemplo de cómo funciona el comando de prueba. Veremos si 1 es igual a 2. Si es verdadero, entonces la salida será "verdadera". De lo contrario, la salida será "falsa".

$ test 1 -eq 2 && echo "verdadero" || hacer eco "falso"

Vamos a desglosarlo.

  • Prueba: el comando de prueba.
  • 1: El primer elemento para la comparación.
  • -EQ: método de comparación (si los valores son iguales).
  • 2: El segundo elemento para comparación.

Si la porción de prueba es verdadera, entonces el primer comando ECHO se ejecutará. De lo contrario, el segundo comando echo se ejecutará.

El mismo comando se puede expresar usando "[".

$ [1 -eq 2] && echo "verdadero" || hacer eco "falso"

Expresión

La expresión es lo que le da al comando de prueba su verdadero poder. La prueba puede usar cadenas, archivos e enteros para comparar. Aquí hay una lista rápida de todos los formatos de expresión de prueba disponibles.

Cadena
En la programación, una cadena es un conjunto de caracteres que generalmente se usan para representar el texto. Por ejemplo, "Hello World" en el siguiente comando Echo se trata como una cadena.

$ echo "Hola mundo."

El comando de prueba admite las siguientes expresiones de cadena.

  • -N: la longitud de la cadena no es cero.
  • -z: la longitud de la cadena es cero.
  • : El valor de la cadena no es cero (quivalente a "-n").
  • =: Tanto String_A como String_B son iguales.
  • !=: Las cadenas String_a y String_b no son iguales.

Probemos estas expresiones.

$ [-n "Hello World"] && Echo "True" || hacer eco "falso"
$ [-z "Hello World"] && Echo "True" || hacer eco "falso"
$ ["Hola mundo" != "Hola mundo"] && echo "verdadero" || hacer eco "falso"
$ [“Hello World” = “Hello World”] && Echo “True” || hacer eco "falso"

Entero

El primer ejemplo de esta guía demuestra comparación entera. Hay más formas de comparar enteros.

  • -eq: integer_a es igual a integer_b.
  • -ne: integer_a no es igual a integer_b
  • -GE: Integer_A es mayor o igual a Integer_B.
  • -GT: Integer_A es mayor que Integer_B.
  • -LE: Integer_A es menor o igual a Integer_B.
  • -LT: Integer_A es menor que Integer_B.

Ponamos estas expresiones en acción.

$ [5 -eq 10] && echo "verdadero" || hacer eco "falso"
$ [5 -gt 2] && echo "verdadero" || hacer eco "falso"
$ [4 -le 5] && echo "verdadero" || hacer eco "falso"

Archivo

Los archivos también pueden ser parte de la expresión. Aquí está la lista de expresiones de archivos compatibles.

  • -EF: Tanto FILE_A como FILE_B tienen un dispositivo similar y un número de inode. Si es cierto, entonces significa que los archivos probablemente están en conjunto. Obtenga más información sobre los enlaces simbólicos de Linux.
  • -NT: en términos de fecha de modificación, file_a es más nuevo que file_b.
  • -OT: file_a es más antiguo que file_b.

El resto de las expresiones de archivo admitidas están relacionadas con una propiedad única de un solo archivo.

  • -E: File_A existe.
  • -F: File_A existe y un archivo regular.
  • -D: FILE_A existe y es un directorio.
  • -r: file_a existe con permisos de lectura.
  • -w: file_a existe con permisos de escritura.
  • -x: file_a existe con los permisos de ejecución.
  • -S: File_A existe y el tamaño del archivo es mayor que cero.
  • -O: FILE_A existe y el propietario es una identificación de usuario efectiva.
  • -G: File_A existe y el propietario es una identificación de grupo efectiva.
  • -h: file_a existe y es un enlace simbólico.
  • -L: file_a existe y es un enlace simbólico.
  • -B: File_A existe. Es un archivo de bloque-explorador.
  • -C: existe file_a. Es un archivo especial de carácter.
  • -S: FILE_A existe. Es un enchufe.

Echemos un vistazo a algunos ejemplos.

$ [-x/usr/bin/bash] && echo $?
$ [-s /bin /bash] && echo $?
$ [-r /bin] && echo $?
$ [-e /hello_world] && echo "verdadero" || Echo "falso"

Implementación de la prueba en scripts bash

Hasta ahora, hemos demostrado cómo usar el comando de prueba para determinar si una determinada condición es verdadera o falsa. Podemos implementar esto en scripts bash para tomar decisiones útiles.

Eche un vistazo al siguiente script corto.

#!/bin/bash
if [$ (whoami) = root]; entonces
hacer eco "raíz"
demás
echo "no root"
FI

Aquí, la declaración IF verificará si la condición es verdadera o falsa. Usando el comando de prueba, podemos obtener fácilmente el valor booleano.

Ejecute el script con y sin privilegio raíz.

ps ./ficticio.mierda
$ sudo ./ficticio.mierda

Es una simple demostración de declaración if-else. No dude en consultar las declaraciones bash if-else para obtener más aplicaciones en profundidad.

Pensamientos finales

El comando de prueba es simple pero poderoso. Esta guía explica y demuestra varias formas de usar la prueba. La lista completa de todas las expresiones compatibles está disponible en la página del hombre.

Prueba de $ hombre

Computación feliz!