대답으로쉘 스크립트의 주석에 관한 이 질문, 이는 :
명시적으로 아무 작업도 수행하지 않는 빈 명령임을 나타냅니다(그러나 주석에는 사용되지 않음).
아무것도 하지 않는 명령이 무슨 소용이 있겠습니까?
답변1
나는 일반적으로 true
루프에서 사용하는 것이 더 명확하다고 생각합니다.
while true; do
...
done
이 기능이 정말 유용하다고 생각하는 곳 중 하나 :
는 일치해야 하는 항목이 있지만 실제로는 아무 작업도 수행하고 싶지 않은 경우의 사례 설명입니다. 예를 들어:
case $answer in
([Yy]*) : ok ;;
(*) echo "stop."; exit 1 ;;
esac
답변2
처음에는 C 컴파일 프로그램이 아니라 Bourne 쉘 프로그램인지 확인하는 데 사용되었습니다. 이것은 shebang과 다양한 스크립트 언어(csh, perl) 이전이었습니다. 다음 스크립트를 계속 실행할 수 있습니다 :
.
$ echo : > /tmp/xyzzy
$ chmod +x /tmp/xyzzy
$ ./xyzzy
$SHELL
일반적으로 (or) 에 대해 스크립트를 실행합니다 /bin/sh
.
그 이후로 주요 용도는 매개변수를 평가하는 것이었습니다. 나는 아직도 다음을 사용한다:
: ${EDITOR:=vim}
스크립트에서 기본값을 설정합니다.
답변3
:
내부에서 종료되어야 하는 루프를 작성하는 데 유용합니다.
while :
do
...stuff...
done
이는 break
또는 가 호출되지 않거나 exit
쉘이 종료 신호를 받지 않는 한 영원히 실행됩니다.
답변4
# 문자 외에도 나는 줄을 일시적으로 주석 처리하기 위해 이 문자를 사용한 적이 있습니다. 이 경우 줄을 주석 처리하면 빈 명령 시퀀스를 허용하지 않는 셸 구문의 결함으로 인해 구문 오류가 발생합니다.
if condition ; then
:# temporarily commented out command
fi
그렇지 않은 경우 명령 시퀀스가 누락될 수 있으며 이는 구문 오류입니다.