조건부 구조의 세미콜론

조건부 구조의 세미콜론

왜 하나에는 세미콜론을 추가하고 다른 하나에는 추가하지 않습니까?

결과는 같습니다

코드 1

if [ "a" == "a" ]
then
 echo "true"
fi

코드 2

if [ "a" == "a" ];
then
 echo "true";
fi

두 번째 코드 부분의 세미콜론은 불필요한가요?

세미콜론은 언제 필요합니까?

답변1

세미콜론은 줄 끝이 누락된 경우에만 필요합니다.

if [ "a" == "a" ] ; then echo "true" ; fi

세미콜론이 없으면 구문 오류가 발생합니다.

견적에 대한 귀하의 질문을 이해하지 못합니다. 좀 더 자세히 알아볼 수 있나요?

(그런데 =not을 사용하는 것이 ==이식성이 뛰어나고 POSIX와 호환됩니다.)

답변2

일부 사람들(예: /me)이 다음 스타일을 좋아하기 때문에 세미콜론이 자주 사용됩니다.

if [ ... ]; then
   doit-it-then
else
   doit-it-else
fi

따라서 then-키워드를 조건행에 배치하면 초로바가 쓴 것처럼 새로운 명령이 시작되기 때문에 필요하다.

조건부 검사의 따옴표와 관련하여 일반적으로 변수에 아무것도 할당되지 않은 경우 예외가 발생하지 않도록 변수와 함께 사용됩니다. 이는 더 안전한 스타일이고 불필요해 보일 수 있지만 쉘 프로그래밍에서도 때때로 프로그램이 변수에 내용을 할당할 수 없는 상황에 놓이게 됩니다. 그러면 빈 문자열이 비교되기 때문에 명령이 계속 작동합니다.

관련 정보