Bash WHILE 루프를 작성하는 방법

명령, 구문 및 예

스크립트 파일에 기록한 다음 실행하여 일련의 명령을 실행할 수 있습니다.

스크립트 파일은 대개 .SH 파일 확장명을 가진 텍스트 파일이며 명령 줄 ( )에서 실행할 수있는 명령 시퀀스를 포함합니다.

while 루프 예제

아래는 while 루프의 예입니다. 이 스크립트 파일을 실행하면 1에서 9까지의 숫자가 화면에 인쇄됩니다. while 문은 for 루프 보다 종료 조건을 지정할 수있는 유연성을 제공합니다.

#! / bin / bash count = 1 while [$ count -le 9] echo "$ count"sleep 1 ((count ++)) done

예를 들어, increment 문 "((count ++))"을 생략하면 이전 스크립트를 무한 루프로 만들 수 있습니다.

#! / bin / bash count = 1 while [$ count -le 9] echo "$ count"sleep 1 done

"sleep 1"문은 각 반복마다 1 초 동안 실행을 일시 중지합니다. Ctrl + C 단축키를 사용하여 프로세스를 종료하십시오.

콜론을 조건으로 넣어 무한 루프를 만들 수도 있습니다.

#! / bin / bash count = 1 while : echo "$ count"sleep 1 ((count ++)) done

while 루프에서 여러 조건을 사용하려면 이중 대괄호 표기법을 사용해야합니다.

count [1] = 0 일 때 count = 1 done = 0 [$ count -le 9] && [$ done == 0] 일 경우 echo $ "sleep ($ count == 5); 그러면 $ done = 1 fi done

이 스크립트에서 변수 "done"은 0으로 초기화되고 카운트가 5에 도달하면 1로 설정됩니다. 루프 조건은 "count"가 9보다 작고 "done"이 동일하면 while 루프가 계속 될 것이라고 말합니다 0으로. 따라서 카운트가 5 일 때 루프가 종료됩니다.

"&&"는 논리적 "and"및 "||" 논리 "또는"을 의미합니다.

조건에서 접속사 "and"및 "or"에 대한 대체 표기법은 하나의 대괄호를 사용하여 "-a"및 "-o"입니다. 위의 조건 :

[[$ count -le 9] && [$ done == 0]]

...는 다음과 같이 재 작성 될 수 있습니다.

[$ count -le 9] -a [$ done == 0]

텍스트 파일 읽기는 일반적으로 while 루프를 사용하여 수행됩니다. 다음 예제에서 bash 스크립트는 "inventory.txt :"파일의 내용을 한 줄씩 읽습니다.

FILE = inventory.txt exec 6

첫 번째 행은 입력 파일 이름을 "FILE"변수에 지정합니다. 두 번째 행은 "표준 입력"을 파일 설명자 "6"에 저장합니다 (3에서 9 사이의 값이 될 수 있음). 이것은 "표준 입력"이 스크립트의 끝에 파일 설명자 "0"으로 복원 될 수 있도록 수행됩니다 (명령문 "exec 0"참조). 3 행에서 입력 파일은 사용 된 파일 설명자 "0"에 지정됩니다 "read"문은 각 반복마다 파일에서 한 줄을 읽고 그것을 "line1"변수에 할당합니다.

조기에 while 루프를 종료하려면 다음과 같은 break 문을 사용할 수 있습니다.

count = 1 done = 0 while [$ count -le 9] echo "$ count"sleep 1 ((count ++)) [$ count == 5] 다음에 fi를 끝낸다.

break 문은 루프가 끝날 때까지 프로그램 실행을 건너 뛰고 그 다음의 모든 문을 실행합니다. 이 경우 "echo finished."

반면에 continue 문은 현재 반복의 while 루프 명령문의 나머지 부분 만 건너 뛴 다음 바로 다음 반복으로 건너 뜁니다.

count = 1 done = 0 [$ count -le 9]가 sleep 할 때 1 ((count ++)) [$ count == 5] then continue fi echo "$ count"done 완료 됨

이 경우 "continue"문은 변수 "count"가 5에 도달하면 실행됩니다. 즉,이 반복에서 (count "값이 5 일 때) 후속 명령문 (echo"$ count ")이 실행되지 않습니다.