조건부 구조의 세미콜론


34

세미콜론을 다른 곳에 넣지 않고 왜 넣는가?

결과는 같습니다

코드 하나

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

코드 2

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

두 번째 코드의 세미콜론이 필요하지 않습니까?

세미콜론을 배치해야하는 경우


2
이것으로 충분하고 적절하게 답변을 받았지만, OP에게도 알려주고 싶습니다. 다만 대체 어떤 : 당신은 예를 들어, 한 줄에 두 명령을 결합 할 수 있도록 줄 끝을svn up; make
아론 D. Marasco

1
;;case 문에서 두 개의 세미콜론 이 일치 항목을 구분하는 데 사용됩니다. ;;선택하지, 여기에 필요한 .... 있지만 ;;같은 것이 아니다 ;또는 ; ;, 그것은 단지처럼 조금 보인다. 단일 세미콜론 ;은 사례 설명의 COMMANDS 부분에서 정상적으로 작동합니다.
cas

답변:


30

세미콜론은 줄 끝이없는 경우에만 필요합니다.

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

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

따옴표에 대한 귀하의 질문을 이해하지 못합니다. 더 자세하게 얘기해 주 시겠어요?

(그리고 그런데 =대신에 사용 하는 ==것이 POSIX와 호환됩니다.)


두 번째 코드의 따옴표가 필요하지 않습니까?
Jhonathan

2
두 샘플의 모든 따옴표는 불필요합니다.
choroba

6

세미콜론은 종종 다음과 같은 스타일을 좋아하는 사람들이 있기 때문에 자주 사용됩니다 :

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

따라서 then-keyword가 조건 행에 있으면 choroba가 작성한 새 명령이 시작되므로 필수입니다.

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.