So erfassen Sie den Rückgabestatus jedes Befehls aus einem Shell-Skript mit mehreren Befehlen

So erfassen Sie den Rückgabestatus jedes Befehls aus einem Shell-Skript mit mehreren Befehlen

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

verwandte Informationen