스크립트의 명령 중 하나에서 오류가 발생하면 어떻게 됩니까?

스크립트의 명령 중 하나에서 오류가 발생하면 어떻게 됩니까?

저는 Alien을 사용하여 RPM을 .deb로 변환합니다. 나는 Alienware의 스크립트 변환을 사용하지 않았습니다. 실제로 스크립트는 호환되지 않는 구문을 내놓았습니다. 내 질문은 이 비호환성을 해결하는 방법에 관한 것이 아니라 오류가 발생하더라도 스크립트가 계속해서 성공적으로 실행될 수 있는 방법에 관한 것입니다.

문제가 되는 부분은 다음과 같습니다.

if [ "`/bin/echo '\c'`" == "" ]; then
   ECHO_ESC="/bin/echo"
else
   ECHO_ESC="/bin/echo -e"
fi

이로 인해 다음과 같은 "오류"가 발생합니다.

./avsetup_mcc: 11: [: \c: unexpected operator

그래도 스크립트는 완벽하게 실행됩니다. 그럼 여기서 무슨 일이 벌어지고 있는 걸까요?

답변1

["특별한 내장"이 아니며 다음을 기반으로 합니다.POSIXUtility syntax error (option or operand error)특수하지 않은 내장 Shall not exit비대화형 셸("스크립트") 중 하나입니다.

쉘이 종료되지 않는 이유는 무엇입니까? 스크립트는 브랜치에 ECHO_ESC관계없이 if일반 항목으로 설정되어 있기 때문에 완벽하게 작동합니다.

오류 메시지에서 제안하는 것과는 달리 오류는 다음에서 발생하지 않지만 \cwith ==는 유효하지 않지만 [(문자열 동일성에 대한 단일 테스트 사용) 지원 =쉘은 단일 대괄호 표기(예: )도 허용하는 것 같습니다 [[====bashksh. 위의 코드는 다음과 같습니다.아니요bash에서 오류가 발생하므로 질문에 다시 태그를 지정하는 것이 좋습니다.

관련 정보