Sto scrivendo uno script di bash e ho impostato errexit
, in modo che lo script morirà se nessun comando non restituisce un codice di uscita 0, ad esempio se un comando non viene completato correttamente. Questo per assicurarsi che il mio script di bash sia solido.Bash Script - smontare un dispositivo, ma non fallire se non è montato?
Devo montare alcuni filesystem, copiare alcuni file, smontarlo. Sto mettendo un umount /mnt/temp
all'inizio in modo che lo smonti prima di fare qualsiasi cosa. Tuttavia, se non è montato, umount fallirà e interromperà il mio script.
È possibile fare un umount --dont-fail-if-not-mounted /mnt/temp
? In modo che restituisca 0 se il dispositivo non è montato? Mi piace rm -f
?
e reindirizzare l'output su/dev/null: umount ...>/dev/null 2> & 1 ||/bin/true – knittl
Beh, questo è un po 'situazionale. È facile immaginare uno script che desideri continuare, ma lasciare tutti i messaggi di errore nel flusso di log. –
Puoi renderlo un po 'più veloce usando lo pseudo-comando ':' (una shell incorporata) invece di/bin/true (che crea un nuovo processo). Cioè, usa "' umount .... ||: '" –