저는 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
일반 항목으로 설정되어 있기 때문에 완벽하게 작동합니다.
오류 메시지에서 제안하는 것과는 달리 오류는 다음에서 발생하지 않지만 \c
with ==
는 유효하지 않지만 [
(문자열 동일성에 대한 단일 테스트 사용) 지원 =
쉘은 단일 대괄호 표기(예: )도 허용하는 것 같습니다 [[
==
==
bash
ksh
. 위의 코드는 다음과 같습니다.아니요bash에서 오류가 발생하므로 질문에 다시 태그를 지정하는 것이 좋습니다.