programing

셸 스크립트의 행 끝에 세미콜론이 필요합니까?

linuxpc 2023. 4. 11. 21:46
반응형

셸 스크립트의 행 끝에 세미콜론이 필요합니까?

다음 내용을 포함하는 셸 스크립트가 있습니다.

case $1 in
    0 )
    echo $1 = 0;
    OUTPUT=3;;
    1 )
    echo $1 = 1;
    OUTPUT=4;;
    2 )
    echo $1 = 2;
    OUTPUT=4;;
esac

HID=$2;
BUNCH=16;
LR=.008;

위의 스니펫에 세미콜론이 완전히 불필요한가요?그리고 어떤 사람들이 이중 세미콜론을 사용하는 이유가 있나요?

세미콜론은 새 줄 대신 사용할 구분 기호일 뿐입니다.

줄 끝에 있는 단일 세미콜론은 필요 없습니다. 새 줄은 명령 구분 기호이기도 하기 때문입니다. case특히 각 패턴 블록의 마지막 명령어 끝에 이중 세미콜론이 필요합니다.를 참조해 주십시오.help case자세한 것은, 을 참조해 주세요.

에 따르면man bash:

  metacharacter
         A character that, when unquoted, separates words.  One of the following:
         |  & ; ( ) < > space tab
  control operator
         A token that performs a control function.  It is one of the following symbols:
         || & && ; ;; ( ) | |& <newline>

그래서...;메타 문자 또는 제어 연산자가 될 수 있지만,;;는 항상 제어 연산자(case 명령어)입니다.

특정 코드로,;는 필요 없습니다.;;하지만 필요합니다.

특별한 발견의 경우,;exec에 의해 호출된 명령어를 종료하기 위해 사용합니다.질문에 대한 @kenorv의 답변을 참조하십시오.

@Opensource book-Amit

단일 세미콜론에 해당하는 줄 바꿈;terminal 또는 shell script로 설정합니다.

다음의 예를 참조해 주세요.

터미널:

[root@server test]# ls;pwd;

셸 스크립트:

[root@server test]# cat test4.sh

echo "Current UserName:"
whoami

echo -e "\nCurrent Date:";date;

[root@server test]#

하지만 나는 그 의견에 동의하지 않는다.&줄바꿈 또는 단일 세미콜론과 동일합니다.

&is background 명령어 실행은 명령어 구분자이지만 세미콜론 또는 줄바꿈으로 동작하지 않습니다.

언급URL : https://stackoverflow.com/questions/7507038/semicolons-superfluous-at-the-end-of-a-line-in-shell-scripts

반응형