Desglosándolo, términos simples:
[[ and ]]
... significa que se está realizando una prueba de veracidad.
$?
... es una variable que contiene el código de salida del último comando de ejecución.
-ne 0
... comprueba que la cosa de la izquierda ($?
) es "no igual" a "cero". En UNIX, un comando que sale con cero tiene éxito, mientras que una salida con cualquier otro valor (1, 2, 3... hasta 255) es un fracaso.
if [[ $? -ne 0 ]];
Está comprobando el código de retorno inmediatamente anterior a esta condición if.
$?
significa código de retorno$? -ne 0
significa que el comando anterior devolvió un error ya que 0 se considera exitoso