Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Il comando test

Link copiato negli appunti

Come in ogni linguaggio di programmazione, anche in Bash è possibile verificare il valore contenuto nelle variabili dichiarate, mediante il comando test: esso che ritorna 0 (vero) o 1 (falso), a seconda della valutazione dell'espressione assegnata. Si possono anche usare le parentesi quadre in sostituzione di test: test expr e [ expr ] sono quindi equivalenti. Il risultato della valutazione viene memorizzato nella variabile built-in $?, e lo si può usare con gli operatori booleani && e ||.

Vediamo un semplice esempio:

#!/bin/bash
i="abc"
j="def"
[ $j != $i ]
echo $?

Questo script utilizza l'operatore != per verificare se il valore contenuto in $j sia diverso da quello contenuto in $i. Si possono confrontare valori aritmetici usando gli operatori -eq (uguale), -ne (diverso), -lt (minore di), -le (minore di o uguale a), -gt (maggiore di), -ge (maggiore di o uguale a). È possibile anche confrontare stringhe, verificandone l'uguaglianza o la precedenza di una rispetto all'altra, utilizzando gli operatori =, !=, <, > (poiché questi ultimi due vengono usati da Bash anche per la redirezione dell'output, è necessario che siano preceduti da \). L'operatore unario -z valuta se la stringa sia nulla, mentre -n o l'omissione di qualunque operatore risulta vero se la stringa non è vuota. Esistono inoltre operatori per test su file, come gli operatori unari -d e -e che valutano rispettivamente l'esistenza del file, e se esso sia una directory, o l'operatore binario -nt, che valuta se il primo file è stato modificato più recentemente del secondo. È utile controllare il manuale (digitando man test) per ottenere la lista di tutte le opzioni di test disponibili.

Infine, è possibile comporre condizioni più complicate tramite gli operatori della logica booleana che abbiamo introdotto nella sezione precedente: l'operatore -a corrisponde all'and logico, -o all'or mentre il ! alla negazione; per imporre la precedenza di un operatore rispetto ad un altro si possono utilizzare le parentesi, che essendo riservate tipicamente all'esecuzione di espressioni in sotto-shell, devono essere in questo caso precedute da \.

Il comando test è implementato su tutte le shell che seguono lo standard POSIX, perciò è utilizzabile su quasi tutte quelle disponibili; Bash, Zsh e la Korn shell implementano anche un nuovo comando test, identificato da doppie parentesi quadre [[, che fornisce una sintassi più semplice e intuitiva degli operatori appena descritti. Utilizzando la nuova sintassi, non è necessario anteporre il simbolo \ alle parentesi, racchiudere fra " le variabili contenenti nomi di file, ed è possibile utilizzare la stessa notazione delle operazioni aritmetiche per i tre operatori di logica booleana &&, || e !. Per ulteriori dettagli sulle specifiche della nuova sintassi, suggeriamo di controllare la pagina di manuale di Bash (digitando man bash).

Ti consigliamo anche