Tra i linguaggi che ho (e sto) studiato il linguaggio Bash e' sicuramente il piu' difficile da comprendere quando si parla di operatori di confronto e logici. Specialmente perche' si usano operatori differenti per stringhe e interi.
Questa vuole essere una specie di appendice per chi, gia' un po' esperto, sta imparando a programmare in questo linguaggio.
Operatori di Confronto (STRINGHE)
-n : Verifica che la stringa sia di lunghezza maggiore di zero
-z : Verifica che la stringa abbia lunghezza zero
= : Verifica che due stringhe siano uguali
!= : Verifica che due stringhe siano diverse
< : Verifica che la prima stringa sia lessicograficamente minore della seconda
> : Verifica che la prima stringa sia lessicograficamente maggiore della seconda
Operatori Logici (STRINGHE)
! : Operatore di negazione, inverte il valore logico dell'espressione al quale viene applicato. !(vero) = falso
-a : Operatore AND. Ritorna vero se entrambi gli argomenti passati lo sono.
-o : Operatore OR. Ritorna vero se almeno uno degli argomenti lo e'.
Operatori di Confronto (NUMERI)
op1 -eq op2 : Vero se gli operandi sono uguali.
op1 -ne op2 : Vero se gli operandi sono differenti.
op1 -lt op2 : Vero se il primo operando e' inferiore al secondo.
op1 -le op2 : Vero se il primo operando e' inferiore o uguale al secondo.
op1 -gt op2 : Vero se il primo operando e' maggiore del secondo.
op1 -ge op2 : Vero se il primo operando e' maggiore o uguale al secondo.
Operatori Logici (
NUMERI)
! espressione : Inverte il risultato logico dell’espressione.
espressione -a espressione : Vero se entrambe le espressioni danno un risultato Vero.
espressione -o espressione : Vero se almeno un’espressione dà un risultato Vero.
Operatori (FILE)
-e file : Vero se il file esiste ed e' di qualunque tipo.
-b file : Vero se il file esiste ed e' un dispositivo a blocchi.
-c file : Vero se il file esiste ed e' un dispositivo a caratteri.
-d file : Vero se il file esiste ed e' una directory.
-f file : Vero se il file esiste ed e' un file normale.
-L file : Vero se il file esiste ed e' un collegamento simbolico.
-p file : Vero se il file esiste ed e' una pipe con nome.
-S file : Vero se il file esiste ed e' un socket.
-t : Vero se lo standard output e' aperto su un terminale.
Permessi (FILE)
-g file : Vero se il file esiste ed e' impostato il suo bit SGID.
-u file : Vero se il file esiste ed e' impostato il suo bit SUID.
-k file : Vero se il file ha il bit Sticky attivo.
-r file : Vero se il file esiste ed e' leggibile.
-w file : Vero se il file esiste ed e' scrivibile.
-x file : Vero se il file esiste ed e' eseguibile.
-O file : Vero se il file esiste e appartiene all’UID efficace dell’utente attuale.
-G file : Vero se il file esiste e appartiene al GID efficace dell’utente attuale.
Altri operatori (FILE)
-s file : Vero se il file esiste e ha una dimensione maggiore di zero.
file1 -nt file2 : Vero se il primo file ha la data di modifica più recente.
file1 -ot file2 : Vero se il primo file ha la data di modifica più vecchia.
file1 -et file2 : Vero se i due nomi corrispondono allo stesso inode.