Il comando test può essere usato sulla riga di comando di Linux per confrontare un elemento con un altro, ma è più comunemente usato negli script di shell BASH come parte di istruzioni condizionali che controllano la logica e il flusso del programma.
Un esempio di base
Puoi provare questi comandi semplicemente aprendo una finestra di terminale.
test 1 -eq 2 && echo "si" || echo "no"
Il comando precedente può essere suddiviso come segue: In sostanza, il comando sta confrontando 1 a 2 e se corrispondono, viene eseguita l'istruzione "si" echo che visualizza "sì" e se non corrispondono, viene eseguita l'istruzione "no" echo che visualizza "no". Se si confrontano elementi che vengono analizzati come numeri, è possibile utilizzare i seguenti operatori di confronto: Esempi test 1 -eq 2 && echo "si" || echo "no"
(visualizza "no" sullo schermo perché 1 non è uguale a 2) test 1 -ge 2 && echo "si" || echo "no"
(visualizza "no" sullo schermo perché 1 non è maggiore o uguale a 2) test 1 -gt 2 && echo "si" || echo "no"
(visualizza "no" sullo schermo perché 1 non è maggiore di 2) test 1 -le 2 && echo "si" || echo "no"
(visualizza "sì" sullo schermo perché 1 è minore o uguale a 2) test 1 -lt 2 && echo "si" || echo "no"
(visualizza "sì" sullo schermo perché 1 è minore o uguale a 2) test 1 -ne 2 && echo "si" || echo "no"
(visualizza "sì" sullo schermo perché 1 non è uguale a 2) Se si confrontano elementi che analizzano come stringhe, è possibile utilizzare i seguenti operatori di confronto: Esempi test "string1" = "stringa2" && echo "sì" || echo "no"
(visualizza "no" sullo schermo perché "stringa1" non è uguale a "stringa2") prova "string1"! = "stringa2" && echo "sì" || echo "no"
(visualizza "sì" sullo schermo perché "stringa1" non è uguale a "stringa2") test -n "string1" && echo "si" || echo "no"
(visualizza "sì" sullo schermo perché "stringa1" ha una lunghezza di stringa maggiore di zero) test -z "string1" && echo "si" || echo "no"
(visualizza "no" sullo schermo perché "stringa1" ha una lunghezza di stringa maggiore di zero) Se si confrontano i file, è possibile utilizzare i seguenti operatori di confronto: Esempi test / percorso / su / file1 -nt / percorso / su / file2 && echo "sì"
(Se file1 è più recente di file2, verrà visualizzata la parola "sì") prova -e / percorso / a / file1 && echo "sì"
(se file1 esiste verrà visualizzata la parola "sì") test -O / percorso / per / file1 && echo "sì"
(se si possiede file1, viene visualizzata la parola "sì") Terminologia Finora, tutto è stato confrontando una cosa contro un'altra, ma cosa succede se si desidera confrontare due condizioni? Ad esempio, se un animale ha 4 zampe e va "moo", probabilmente è una mucca. Il semplice controllo di 4 zampe non garantisce di avere una mucca, ma controlla il suono che fa sicuramente. Per testare entrambe le condizioni contemporaneamente, utilizzare la seguente dichiarazione: test 4 -eq 4 -a "moo" = "moo" && echo "è una mucca" || echo "non è una mucca"
La parte chiave qui è la -a che sta per e . Esiste un modo migliore e più comunemente usato per eseguire lo stesso test e questo è il seguente: test 4 -eq 4 && test "moo" = "moo" && echo "è una mucca" || echo "non è una mucca"
Un altro test che potresti voler fare è confrontare due affermazioni e se una delle due è vera, emette una stringa. Ad esempio, se si desidera verificare che esista un file denominato "file1.txt" o che esista un file denominato "file1.doc", è possibile utilizzare il seguente comando: test -e file1.txt -o -e file1.doc && echo "file1 esiste" || echo "file1 non esiste"
La parte chiave qui è la -o che sta per o . Esiste un modo migliore e più comunemente usato per eseguire lo stesso test e questo è il seguente: prova -e file1.txt || test -e file1.doc && echo "file1 esiste" || echo "file1 non esiste" In realtà non è necessario utilizzare la parola test per eseguire il confronto. Tutto quello che devi fare è racchiudere la frase tra parentesi quadre come segue: -e file1.txt && echo "file1 esiste" || echo "file1 non esiste"
Il e in pratica significa lo stesso di test. Ora lo sai che puoi migliorare confrontando più condizioni come segue: 4 -eq 4 && "moo" = "moo" && echo "è una mucca" || echo "non è una mucca"-e file1.txt || -e file1.doc && echo "file1 esiste" || echo "file1 non esiste" Il comando test è più utile negli script perché è possibile verificare il valore di una variabile rispetto a un'altra e controllare il flusso del programma. Sulla riga di comando standard, è possibile utilizzarlo per verificare se un file esiste o meno.
Confronto di numeri
Confronto di testo
Confronto di file
Confronto tra più condizioni
Eliminazione della parola chiave test
Sommario