Ich bin neu im Shell-Scripting und schreibe ein Skript mit mehreren RM-Befehlen. Das Skript muss Dateien in einigen Verzeichnissen entfernen. Ich möchte den Beendigungsstatus für jeden Befehl erfassen und den Beendigungsstatus zurückgeben, wenn etwas fehlschlägt, und mit dem nächsten Befehl fortfahren. Kann mir jemand helfen, mein Skript zu korrigieren?
#!/bin/bash
PATH1=mydir/folder/
PATH2=mydir/newfolder/
HOST= hostname | grep -o "[0-9]*" | head -1
case "$HOST" in
01)echo "Removing files in server 1.."
find $PATH1/logs -maxdepth 1 -mtime +30 -type f \( -name "*.log*" -o -name "*.out*" \) -exec rm -f {} \;
find $PATH1/logs -maxdepth 1 -mtime +30 -type f \( -name "*.log*" -o -name "*.out*" \) -exec rm -f {} \;
RETVAL=$?
;;
02)echo "Remove logfiles in server 02"
find $PATH2/logs -maxdepth 1 -mtime +30 -type f \( -name "*.log*" -o - name "*.out*" \) -exec rm -f {} \;
find $PATH2/logs -maxdepth 1 -mtime +30 -type f \( -name "*.log*" -o -name "*.out*" \) -exec rm -f {} \;
RETVAL=$?
;;
*)
echo "Removal of log files is complete"
esac
Antwort1
an echo $?
sollte den Status des vorherigen Befehls zurückgeben. Sie können also verwenden
if [ ! $? -eq 0 ]; then
echo "command failed"
else
echo "command success"
fi