728x90
[Shell Script] 명령어 실패 시 재시도하기
로그인을 성공을 하면 다음 스크립트로 넘어가야하는데,
로그인에 실패를 하는 경우에도 다음 스크립트로 넘어가는 경우가 발생했다.
로그인에 실패를 하는 경우엔 Error가 포함된 메시지가 출력되기 때문에, 아래와 같이
로그인 명령어를 실행했을 때, "Error" 라는 단어가 포함 될 경우 명령어를 재시도하는 코드를 작성했다.
while true; do
output=$(eval $command_to_run 2>&1)
if [[ $output == *"Error"* ]]; then
echo "Login failed. Retrying..."
echo "Enter Password : "
else
echo "Login successfully."
break
fi
done
2>&1 는 표준 에러 출력을 표준 출력으로 리다이렉트
While 문을 통해서 실행 후에 에러메시지가 포함되어 있는지 확인하고, 에러 메시지가 포함되어 있다면 성공을 할 때까지 루프가 반복되도록 구성했다.
While 루프 내에 카운터 변수와 조건을 추가하여 원하는 횟수만큼 재시도하도록 구성도 가능하다.
명령어 실행 결과를 확인하는 방법에는 다른 방법도 있는데 $? 를 사용하는 방식이다.
if [ $? -eq 0 ]; then
echo "Command executed successfully after retry."
else
echo "Command still failed after retry."
fi
- $? : 이전 명령어의 종료 상태를 반환
- $? -eq 0 : 이전 명령어의 종료 상태가 0과 같은지, 즉 성공적으로 실행되었는지를 확인
위와 같은 방식을 통해 성공 여부를 판단 할 수 있다.
반응형
'🌏 OS > Linux' 카테고리의 다른 글
[Linux] 리눅스 계정 (0) | 2023.08.05 |
---|---|
[Shell Script] 파일의 변경 시간에 따라 조건 설정하기 (0) | 2023.07.10 |
[Shell Script] 파일 내용 여부에 따라 명령어 실행하기 (0) | 2023.07.07 |
[Linux] SSH 설정 변경, 포트 변경 (0) | 2023.06.11 |
[Linux] 시스템 로그 (0) | 2023.05.25 |