Scomponendolo, termini semplici:
[[ and ]]
... significa che è in corso un test di veridicità.
$?
... è una variabile che contiene il codice di uscita dell'ultimo comando eseguito.
-ne 0
... controlla che la cosa a sinistra ($?
) è "diverso" da "zero". In UNIX, un comando che esce con zero è riuscito, mentre un'uscita con qualsiasi altro valore (1, 2, 3... fino a 255) è un fallimento.
if [[ $? -ne 0 ]];
Sta controllando il codice di ritorno immediatamente precedente a questa condizione if.
$?
significa codice di ritorno$? -ne 0
significa che il comando precedente ha restituito un errore poiché 0 è considerato un successo