여러 명령을 사용하여 쉘 스크립트에서 각 명령의 반환 상태를 캡처하는 방법

여러 명령을 사용하여 쉘 스크립트에서 각 명령의 반환 상태를 캡처하는 방법

저는 쉘 스크립팅과 여러 rm 명령을 사용하여 스크립트 작성을 처음 접했습니다. 스크립트는 일부 디렉터리의 파일을 제거해야 합니다. 각 명령의 종료 상태를 캡처하고 뭔가 실패하면 종료 상태를 반환하고 다음 명령을 진행하고 싶습니다. 누군가 내 스크립트를 수정하도록 도와줄 수 있습니까?

    #!/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

답변1

echo $?이전 명령의 상태를 반환해야 합니다 . 그래서 당신은 사용하고 싶을 수도 있습니다

if [ ! $? -eq 0 ]; then
    echo "command failed"
else
    echo "command success"
fi

관련 정보