Non comportarti come se Bash fosse Python o C. Il problema più comune negli script shell è l’uso eccessivo di if per controlli semplici. Anche se la logica condizionale serve, Bash ha un modo migliore e più idiomatico per farlo: i codici di uscita e gli operatori logici.

Le basi

Ogni comando in Bash restituisce un codice di uscita. 0 significa successo, qualsiasi altro valore indica errore. Puoi concatenare comandi usando questi codici con operatori logici, evitando così lunghi blocchi if.

Assegnazioni condizionali migliori

È comune controllare se una variabile è vuota e assegnarle un valore di default.

Metodo lungo:

if [ -z "$EDITOR" ]; then
    EDITOR="vim"
fi

Qui [ -z "$EDITOR" ] restituisce vero (0) se la variabile è vuota. L’operatore && fa sì che l’assegnazione avvenga solo in quel caso.

Concatenare il flusso dei comandi

Questo approccio funziona bene anche per workflow più complessi. Invece di annidare if, usa catene logiche.

Problema con annidamenti:

func1
if [ $? -eq 0 ]; then
    func2
    if [ $? -eq 0 ]; then
        func3
    else
        handle_error
    fi
fi

Catena logica

func1 && func2 && func3 || handle_error

Qui l’esecuzione è lineare: ogni comando parte solo se il precedente ha avuto successo. Se uno fallisce, la catena si interrompe e viene eseguito il blocco   .

Conclusione

L’eleganza negli script nasce dallo sfruttare il comportamento nativo della shell.

Usa if quando migliora davvero la leggibilità.

Per tutto il resto, le catene logiche sono spesso la scelta più pulita e idiomatica.