쉘 스크립트에서 스트링 비교할 때 "x$STR" = "xABC" 와 같이 x를 붙이는 이유는 뭔가요?

vudghkzm의 이미지

쉘 스크립트를 보다 보면, 스트링을 비교할 때 "x$STR" = "xABC" 와 같이 x를 접두사로 붙이고 비교하는 모습을 자주 볼 수 있는데요

이렇게 하는 이유가 있는지 궁금하네요.

tifler의 이미지

$STR에 아무것도 할당되지 않을경우를 대비하기 위해서 입니다.

/***********************
* while(1) sleep(INFINITE);
***********************/

vudghkzm의 이미지

그럼 그때는 "" = "$STR" 과 같이 비교하면 되는거 아닌가요??

tifler의 이미지

STR=
if [ "$STR" = "ABC" ]

이렇게 비교한다면 문제가 안됩니다만,

STR=
if [ $STR = "ABC" ]

이렇게 되면 오류가 발생하게 됩니다.

두번째 코드에 나타난 오류의 소지를 없애고자 prefix를 붙이는 코딩스타일이 나오게 된것으로 알고 있습니다.

/***********************
* while(1) sleep(INFINITE);
***********************/