Comando test bash

Comando test bash
In Bash Shell, il comando Test confronta un elemento con un altro e restituisce vero o falso. Negli script bash, il comando di test è parte integrante delle dichiarazioni condizionali che controllano la logica e il flusso del programma.

Questa guida dimostra come utilizzare il comando bash test.

Comando di prova

Il comando di test prende un file ESPRESSIONE come argomento. Dopo aver calcolato l'espressione, il test restituisce un valore alla variabile bash “$?". Se il valore è 0, allora la valutazione dell'espressione era vera. Se il valore è 1, allora la valutazione dell'espressione era falsa.

Esistono due sintassi per l'utilizzo del comando di test.

$ test espressione
$ [Espressione]

Si noti che nel caso di "[", c'è uno spazio ad entrambe le estremità del ESPRESSIONE.

Utilizzo del test

Ecco un breve esempio di come funziona il comando di prova. Controlleremo se 1 uguale a 2. Se vero, l'output sarà "vero". Altrimenti, l'output sarà "falso".

$ test 1 -eq 2 && echo “true” || Echo "false"

Rompilo.

  • Test: il comando di test.
  • 1: il primo elemento per il confronto.
  • -Eq: metodo di confronto (se i valori sono uguali).
  • 2: il secondo elemento per il confronto.

Se la parte del test è vera, allora il primo comando Echo. Altrimenti, il secondo comando Echo eseguirà.

Lo stesso comando può essere espresso usando "[".

$ [1 -eq 2] && echo “vero” || Echo "false"

Espressione

L'espressione è ciò che dà al comando di prova il suo vero potere. Il test può utilizzare stringhe, file e numeri interi per il confronto. Ecco un rapido elenco di tutti i formati di espressione del test disponibili.

Corda
Nella programmazione, una stringa è un insieme di caratteri che vengono generalmente utilizzati per rappresentare il testo. Ad esempio, "Hello World" nel seguente comando Echo è trattato come una stringa.

$ echo “Ciao mondo."

Il comando di test supporta le seguenti espressioni di stringa.

  • -N: la lunghezza della stringa è diversa zero.
  • -Z: la lunghezza della stringa è zero.
  • : Il valore della stringa è diverso da zero (da quivale in "-n").
  • =: Entrambi String_a e String_b sono uguali.
  • !=: Strings String_a e String_b non sono uguali.

Proviamo queste espressioni.

$ [-n "Hello World"] && echo "vero" || Echo "false"
$ [-Z "Hello World"] && echo "vero" || Echo "false"
$ ["Hello World" != "Hello World"] && echo "vero" || Echo "false"
$ ["Hello World" = "Hello World"] && echo "True" || Echo "false"

Numero intero

Il primo esempio in questa guida dimostra il confronto intero. Esistono altri modi per confrontare i numeri interi.

  • -EQ: integer_a è uguale a integer_b.
  • -NE: integer_a non è uguale a integer_b
  • -GE: integer_a è maggiore o uguale a integer_b.
  • -GT: integer_a è maggiore di integer_b.
  • -LE: Integer_a è inferiore o uguale a integer_b.
  • -LT: integer_a è inferiore a integer_b.

Mettiamo in azione queste espressioni.

$ [5 -eq 10] && echo “vero” || Echo "false"
$ [5 -gt 2] && echo “vero” || Echo "false"
$ [4 -le 5] && echo “vero” || Echo "false"

File

I file possono anche far parte dell'espressione. Ecco l'elenco delle espressioni di file supportate.

  • -EF: sia file_a che file_b hanno un numero di dispositivo e inode simili. Se è vero, allora significa che i file sono molto probabilmente simbolici. Ulteriori informazioni sui collegamenti simbolici Linux.
  • -NT: in termini di data di modifica, file_a è nuovo di file_b.
  • -OT: file_a è più vecchio di file_b.

Il resto delle espressioni di file supportate è correlato a una singola proprietà di un singolo file.

  • -E: file_a esiste.
  • -F: file_a esiste e un file normale.
  • -D: file_a esiste ed è una directory.
  • -R: file_a esiste con le autorizzazioni di lettura.
  • -W: file_a esiste con le autorizzazioni di scrittura.
  • -X: file_a esiste con le autorizzazioni di esecuzione.
  • -S: file_a esiste e la dimensione del file è maggiore di zero.
  • -O: file_a esiste e il proprietario è un ID utente efficace.
  • -G: file_a esiste e il proprietario è un ID di gruppo efficace.
  • -H: file_a esiste ed è un collegamento simbolico.
  • -L: file_a esiste ed è un collegamento simbolico.
  • -B: file_a esiste. È un file specialistico.
  • -c: file_a esiste. È un file specialistico.
  • -S: file_a esiste. È una presa.

Diamo un'occhiata ad alcuni esempi.

$ [-x/usr/bin/bash] && echo $?
$ [-s /bin /bash] && echo $?
$ [-r /bin] && echo $?
$ [-e /hello_world] && echo "true" || echo "false"

Implementazione del test negli script bash

Finora, abbiamo dimostrato come utilizzare il comando di test per determinare se una determinata condizione è vera o falsa. Possiamo implementarlo in script bash per prendere decisioni utili.

Dai un'occhiata al seguente breve script.

#!/Bin/Bash
if [$ (whoami) = root]; Poi
Echo "Root"
altro
echo "non root"
fi

Qui, l'istruzione IF controllerà se la condizione è vera o falsa. Usando il comando di prova, possiamo facilmente ottenere il valore booleano.

Esegui lo script con e senza privilegio di root.

$ ./manichino.sh
$ sudo ./manichino.sh

È una semplice dimostrazione di affermazione If-Else. Sentiti libero di controllare le dichiarazioni di Bash If-Else per ulteriori applicazioni approfondite.

Pensieri finali

Il comando di test è semplice ma potente. Questa guida spiega e dimostra vari modi di utilizzare il test. L'elenco completo di tutte le espressioni supportate è disponibile sulla pagina Man.

$ Man Test

Felice calcolo!