Ich schreibe ein Bash-Skript und ich habe errexit
gesetzt, so dass das Skript stirbt, wenn ein Befehl keinen 0 Exit-Code zurückgibt, d. H. Wenn ein Befehl nicht erfolgreich abgeschlossen wird. Dies ist um sicherzustellen, dass mein Bash-Skript robust ist.Bash Script - umount ein Gerät, aber nicht fehlschlagen, wenn es nicht gemountet ist?
Ich muss einige Dateisysteme mounten, einige Dateien kopieren, umount es. Ich setze eine umount /mnt/temp
am Anfang, so dass es umount wird, bevor Sie etwas tun. Wenn es jedoch nicht gemountet ist, schlägt umount fehl und stoppt mein Skript.
Ist es möglich, eine umount --dont-fail-if-not-mounted /mnt/temp
zu tun? So dass es 0 zurückgibt, wenn das Gerät nicht montiert ist? Wie rm -f
?
und die Ausgabe an/dev/null umleiten: umount ...>/dev/null 2> & 1 ||/bin/true – knittl
Nun, das ist irgendwie situationsbedingt. Es ist leicht vorstellbar, dass ein Skript fortfahren möchte, aber Fehlermeldungen im Protokolldatenstrom bleiben. –
Sie können dies etwas schneller machen, indem Sie den Pseudobefehl ':' (eine eingebaute Shell) anstelle von/bin/true verwenden (wodurch ein neuer Prozess erstellt wird). Das heißt, verwenden Sie "' umount .... ||: '" –