Bash scripting - istruzioni composte: differenze tra le versioni

semplificata parte sulle condizioni
m (→‎Cicli: quoting di variabili mancante)
(semplificata parte sulle condizioni)
Riga 228: Riga 228:


===Condizioni complesse===
===Condizioni complesse===
Esempi di condizioni, equivalenti, per controllare se una variabile contiene un intero:
Anche se '''bash''' dispone di altri metodi per unire condizioni più semplici, è possibile utilizzare la sintassi ''POSIX'', concatenando più comandi <code>[...]</code> tramite gli operatori logici ''AND'' e ''OR'' logici (<code>&&</code> e <code>||</code>, rispettivamente) e raggruppandoli con <code>{ ... ; }</code>. Inoltre gli operatori logici sono più efficienti, in quanto verrebbero eseguiti soltanto i comandi necessari a valutare la condizione, e si possono usare per evitare errori.
<pre>
[ "$var" -ge 0 ] 2> /dev/null || [ "$var" -lt 0 ] 2> /dev/null
[ "$var" -ne 0 ] 2> /dev/null || [ "$var" -eq 0 ] 2> /dev/null # equivalente
[ "$var" -ne 0 ] 2> /dev/null || [ "$var" = 0 ]                # equivalente
</pre>
 
E la condizione può essere usata con <code>if</code>:
<pre>
if [ "$numero" -ne 0 ] 2> /dev/null || # fallisce solo se $numero è 0 oppuer se non è intero
  [ "$numero" = 0 ]                  # copre il caso in cui $numero è 0
then
    printf %s\\n "Il numero inserito (${numero}) è intero"
else
    printf %s\\n "ERRORE: il numero inserito non (${numero}) è intero!" >&2
fi
</pre>
 
Anche se '''bash''' dispone di altri metodi per unire condizioni più semplici, è possibile utilizzare la sintassi ''POSIX'', combinando il comando condizionale <code>[...]</code>, le concatenazioni con ''AND'' e ''OR'' logici (<code>&&</code> e <code>||</code>, rispettivamente), e il raggruppamento <code>{ ... ; }</code>. Inoltre gli operatori logici sono più efficienti, in quanto verrebbero eseguiti soltanto i comandi necessari a valutare la condizione, e si possono usare per evitare errori.


Per esempio:
Per esempio:
Riga 262: Riga 244:
</pre>
</pre>


Esempi di condizioni complesse sull'esistenza dei file:
Esempi di condizioni complesse sull'esistenza dei file, in genere utilizzate dall'istruzione <code>if</code>:
<pre>
<pre>
# Controlla che il file regolare esista e sia leggibile
# Controlla che il file regolare esista e sia leggibile
3 581

contributi