if...else에서 쉘 스크립트 종료

if...else에서 쉘 스크립트 종료

쉘 스크립트가 있는데 변수 값에 따라 종료하고 싶습니다 ERROR_COUNT. 난 쓸수있다

if [ ${ERROR_COUNT} -gt 0 ]
then
    echo "Exiting unsuccessfully";
    exit 1;
fi
echo "Exiting successfully";
exit;

또는

if [ ${ERROR_COUNT} -gt 0 ]
then
    echo "Exiting unsuccessfully";
    exit 1;
else
    echo "Exiting successfully";
    exit;
fi

이 두 가지 방법에 문제가 있나요?

답변1

어떤 일이 일어날지에 관해서는 두 가지 분기 작성 방법 사이에 기술적인 차이가 없습니다. 스타일과 개인 취향의 문제입니다.

else일부 개발자는 첫 번째 분기가 종료되는 경우 if 문의 분기에서 무조건 종료되는 것을 좋아하지 않습니다.

코드를 다음과 같이 작성할 수 있습니다.

if [ "$ERROR_COUNT" -ne 0 ]; then
    echo 'There were errors' >&2
    exit 1
fi
# echo 'No errors' >&2

제거된 세미콜론, 인용된 변수 확장 및 제거된 마지막 확장 exit(스크립트 끝에 암시적)을 참고하세요. (적어도 나에게는) 더 명확하기 때문에 테스트를 -ne 0다음 으로 변경했습니다.-gt 0

또한 두 가지 진단 메시지의 출력을 변경하여 표준 오류 스트림으로 이동하도록 했습니다(그리고 사용자에게 더 유용한 방식으로 개선했습니다). echo성공적인 실행 외에 보고할 것이 실제로 없기 때문에 마지막 항목이 있어야 하는지 여부는 논쟁의 여지가 있습니다.

관련 정보