구문은 다음과 같습니다.
while
first list of commands
do
second list of commands
done
첫 번째 명령 목록 (해당 목록의 마지막 실행)이 성공하면 루프에서 두 번째 명령 목록을 실행합니다.
그에서 명령의 첫 번째 목록 , 당신은 사용할 수있는 [
테스트의 다양한 종류를 수행하는 명령을하거나 사용할 수 있습니다 :
아무것도 반환 성공, 또는 다른 명령을하지 않습니다 널 명령을 사용합니다.
while :; do cmd; done
실행 cmd
을 통해 영원히 같은 이상과 :
항상 성공을 반환합니다. 그것은 영원한 고리입니다. true
명령을보다 읽기 쉽게하기 위해 대신 사용할 수 있습니다 .
while true; do cmd; done
사람들 은 항상 오래 전부터했던 :
것처럼 선호 :
했지만 true
(오래 전에는 대부분의 껍질에 true
내장되어 있습니다) ¹.
다른 변형이 나타날 수 있습니다.
while [ 1 ]; do cmd; done
위에서 우리는 [
"1"문자열이 비어 있지 않은지 테스트하기 위해 명령을 호출하고 있습니다 (따라서 항상 참).
while ((1)); do cmd; done
Korn / bash / zsh ((...))
구문을 사용하여 while(1) { ...; }
C 를 모방
이상 뒤얽힌 사람이 좋아 until false; do cmd; done
, until ! true
...
그것들은 때때로 다음과 같이 별칭이 지정됩니다 :
alias forever='while :; do'
따라서 다음과 같은 작업을 수행 할 수 있습니다.
forever cmd; done
조건이 명령 목록 이라는 것을 아는 사람은 거의 없습니다 . 예를 들어 사람들이 다음과 같이 쓰는 것을 볼 수 있습니다.
while :; do
cmd1
cmd2 || break
cmd3
done
그들이 쓸 수있을 때 :
while
cmd1
cmd2
do
cmd3
done
명령 목록과 같은 작업을 자주 수행하려는 경우 목록이 되는 것이 합리적입니다 while cmd1 && cmd2; do...; done
.
어떤 경우, 노트에 [
다른 같은 명령이다, 그것은 전적으로 사용할 수 없습니다 (그것은 Bourne의이 같은 쉘 현대에 내장 비록) if
/ while
/ until
조건 목록 및 그 상태 목록이 없습니다 다른 명령보다 그 명령을 더 많이 사용합니다.
¹ :
는 또한 더 짧으며 인수를받습니다 (무시) 인수를 전달하면 true
또는 동작 false
이 지정되지 않은 상태입니다. 예를 들어 다음과 같이 할 수 있습니다.
while : you wait; do
something
done
그러나 다음의 동작은 다음과 같습니다.
until false is true; do
something
done
지정되지 않았습니다 (대부분의 쉘 / false
구현 에서 작동하지만 ).
:
은 아무것도 수행 하지 않고 항상 리턴 코드 0으로 종료됩니다. 따라서while true
시스템에true
실행 파일 이 있다고 가정합니다 .