possono essere unarie o binarie. Le
    espressioni unarie sono spesso usate per esaminare lo stato di un file.
    Esistono anche operatori di stringa e di comparazione numerica.
    
    Il comportamento del test dipende dal numero degli argomenti. Leggere
    la pagina di manuale di bash per le specifiche complete.
    
    Operatori su file:
    
      -a FILE        Vero se il file esiste.
      -b FILE        Vero se è un file speciale a blocchi.
      -c FILE        Vero se è un file speciale a caratteri.
      -d FILE        Vero se il file è una directory.
      -e FILE        Vero se il file esiste.
      -f FILE        Vero se il file esiste ed è un file normale.
      -g FILE        Vero se il file è un set-group-id.
      -h FILE        Vero se il file è un link simbolico.
      -L FILE        Vero se il file è un link simbolico.
      -k FILE        Vero se il file ha il suo bit "sticky" impostato.
      -p FILE        Vero se il file è una pipe con nome.
      -r FILE        Vero se il file è leggibile dall' utente corrente.
      -s FILE        Vero se il file esiste e non è vuoto.
      -S FILE        Vero se il file è un socket.
      -t FD          Vero se il descrittore di file è aperto su un terminale.
      -u FILE        Vero se il file è un set-user-id.
      -w FILE        Vero se il file è scrivibile dall'utente corrente.
      -x FILE        Vero se il file è eseguibile dall'utente corrente.
      -O FILE        Vero se l'utente corrente è il reale proprietario del
                     file.
      -G FILE        Vero se il gruppo dell'utente corrente è il reale
                     proprietario del file.
      -N FILE        Vero se il file è stato modificato dall'ultima volta
                     che è stato letto.
    
      FILE1 -nt FILE2  Vero se il file1 è più recente del file2 (in accordo
                        con la data di modifica).
    
      FILE1 -ot FILE2  Vero se il file1 è più vecchio del file2.
    
      FILE1 -ef FILE2  Vero se il file1 è un link hardware al file2.
    
    Operatori di stringa:
    
      -z STRINGA     Vero se la stringa è vuota.
    
      -n STRINGA     Vero se la stringa non è vuota.
    
      STRINGA1 = STRINGA2
                     Vero se le stringhe sono uguali.
      STRINGA1 != STRINGA2
                     Vero se le stringhe non sono uguali.
      STRINGA1 < STRINGA2
                     Vero se la STRINGA1 viene ordinata lessicograficamente
                     prima della STRINGA2.
      STRINGA1 > STRINGA2
                     Vero se la STRINGA1 viene ordinata lessicograficamente
                     dopo la STRINGA2.
    
    Altri operatori:
    
      -o OPZIONE     Vero se l'OPZIONE di shell è abilitata.
      -v VAR         Vero se la variabile di shell VAR è impostata.
      -R VAR         Vero se la variabile di shell VAR è impostata
                     ed è un riferimento a nome.
      ! ESPR         Vero se l'ESPR è falsa.
      ESPR1 -a ESPR2 Vero se entrambe le espressioni espr1 E espr2 sono vere.
      ESPR1 -o ESPR2 Vero se è vera almeno una delle due espressioni
                     espr1 O espr2.
    
      arg1 OP arg2   Test aritmetici. OP è uno tra -eq, -ne,
                     -lt, -le, -gt oppure -ge.
    
    Gli operatori aritmetici binari restituiscono vero se ARG1 è uguale, non
    uguale, più piccolo di, più piccolo o uguale, più grande di o più grande
    o uguale ad ARG2.
    
    Stato di uscita:
    Restituisce successo se l'ESPR viene valutata vera; insuccesso se l'ESPR
    viene valutata falsa o viene fornito un argomento non valido.