La utilidad 7z
devuelve un código de salida que no es cero -si la operación que realiza falla. Puede usar este hecho para intentar extraer el archivo y luego hacer otra cosa si eso falla:
if ! 7z e filename 2>/dev/null; then
# do something else
fi
o, dependiendo de qué más quieras hacer o no hacer,
if 7z e filename 2>/dev/null; then
exit
fi
# do something else
que puede acortarse a
7z e filename 2>/dev/null && exit
# do something else
Obviamente podría envolver esto en
if 7z t filename; then
fi
y detecte una falla de extracción (debido a que no hay suficiente espacio en disco o cualquier otro error que pueda ocurrir durante la extracción )por separado de una falla al determinar que este es de hecho un archivo 7z
.
El código completo puede parecerse a
if 7z t filename 2>/dev/null; then
if 7z e filename 2>/dev/null; then
echo 'All is good, archive extracted' >&2
else
echo 'Archive failed to extract' >&2
fi
else
echo '7z failed to process the file' >&2
fi