[bash] 쉘 스크립트의 줄 끝에 세미콜론이 불필요합니까?
다음을 포함하는 쉘 스크립트가 있습니다.
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>
따라서 ;
는 메타 문자 또는 제어 연산자 일 수 있으며 ;;
는 항상 제어 연산자 (명령의 경우)입니다.
특정 코드에서는 ;
줄 끝의 모든 것이 필요하지 않습니다. 은 ;;
그러나 필요합니다.
답변
find의 특별한 경우에는 ;
-exec에 의해 호출 된 명령을 종료하는 데 사용됩니다. 이 질문에 대한 @kenorb의 대답을 참조하십시오 .
답변
@ Opensourcebook-Amit
;
터미널 또는 쉘 스크립트의 단일 세미콜론 에 해당하는 줄 바꿈 .
아래 예를 참조하십시오.
터미널에서 :
[root@server test]# ls;pwd;
쉘 스크립트에서 :
[root@server test]# cat test4.sh
echo "Current UserName:"
whoami
echo -e "\nCurrent Date:";date;
[root@server test]#
그러나 나는 &
개행 또는 단일 세미콜론에 해당 하는 주석에 동의하지 않습니다.
&
백그라운드에서 실행 명령도 명령 구분 기호이지만 세미콜론이나 줄 바꿈으로 작동하지 않습니다.
답변
@Ignacio Vazquez-Abrams
사실이 완전히 정확하지 않은 줄 끝에서 단일 세미콜론은 없습니다 불필요한 확실히 새로운 라인과 같은 것이 아니다.
로부터 배쉬 참조 설명서
‘;’로 구분 된 명령 순차적으로 실행됩니다. 쉘은 각 명령이 차례로 종료되기를 기다립니다. 반환 상태는 마지막으로 실행 된 명령의 종료 상태입니다.
세미콜론으로 구분 된 명령이 항상 순차적으로 실행될 때 “새 줄”로 구분 된 명령이 병렬 로 실행될 수 있습니다.