Bash 'Until' 루프: 자습서 및 예제

Bash 스크립트에서 'until' 루프를 사용하여 명령을 반복합니다.

Bash(Bourne Again Shell)는 GNU/Linux 운영 체제의 셸 명령 프롬프트 및 스크립팅 언어입니다. 대부분의 Linux 배포판의 기본 셸입니다.

대부분의 스크립팅 언어와 마찬가지로 Bash는 유사한 작업을 여러 번 반복하는 루프 구문을 제공합니다. 이 기사에서는 사용 방법에 대해 알아볼 것입니다. ~까지 Bash의 루프.

소개

그만큼 ~까지 Bash의 루프는 다른 명령(조건 명령)의 출력을 기반으로 명령(실행된 명령)을 여러 번 실행하는 데 사용됩니다. 실행된 명령은 조건 명령이 계속 실패할 때까지 계속 실행됩니다(즉, 0이 아닌 상태를 반환합니다. Linux의 모든 명령은 성공의 경우 0을 반환하고 실패의 경우 0이 아닌 정수를 반환함). 이것은 정확히 반대입니다 동안 실행된 명령이 조건 명령이 성공할 때까지 계속 실행되는 루프입니다.

여러 조건 명령이 있는 경우 명령문은 목록의 마지막 명령 상태만 고려합니다. 즉, 목록의 마지막 명령이 계속 실패할 때까지 루프가 실행됩니다.

일반 구문

에 대한 일반 구문 ~까지 Bash의 루프는 다음과 같습니다.

할 때까지

실행 명령 목록은 조건 명령 목록의 마지막 명령이 실패할 때까지 실행됩니다. 마지막 명령이 성공하면 루프가 종료됩니다.

사용자는 명령 목록에서 실행 파일을 지정할 수 있습니다. 표준 Linux 프로그램 또는 사용자 정의 사용자 프로그램 또는 스크립트일 수 있습니다. 각 명령은 새 줄에 있거나 같은 줄에서 세미콜론으로 구분되어야 합니다.

몇 가지 예를 살펴보겠습니다.

변수가 특정 값을 가질 때까지 반복: 다음 루프는 변수의 값까지 실행됩니다. 엑스 10이다.

x=0 [[ $x -eq 10 ]] do echo $x ((x++)) 완료

각 반복에서 x 값이 10인지 확인합니다. 값은 다음을 사용하여 확인됩니다. 테스트 명령. [[ 표현 ]] 테스트 명령의 구문입니다(참조 남자 테스트).

그런 다음 내부 ...다 블록, 우리는 단순히 x의 값을 인쇄하고 증가시킵니다. 조건 명령이 성공하면 루프가 종료됩니다. $x 와 동등하다 10.

메모: 'until' 루프에서 사용할 인덱스 변수는 변수를 암시적으로 초기화할 수 있는 for 루프와 달리 'until' 루프 이전이나 조건 명령에서 초기화됩니다.

여러 조건 명령 사용: 다음 루프는 5개의 디렉토리를 생성합니다. dir0, dir1, ... dir4.

echo "안녕하세요" echo "안녕" [[ $z -eq 5 ]] do echo "dir$z 생성 중..."까지 z=0 mkdir dir$z ((z++)) 완료

첫 번째 명령 echo "Hi" 및 echo "Bye"는 한 번 완전히 실행됩니다. 성공 또는 실패는 루프가 실행되는 시간에 영향을 미치지 않습니다.

그러면 변수 z의 값을 확인하는 테스트 명령이 실행됩니다. 이 명령이 계속 실패할 때까지, 즉 z 값이 5가 될 때까지 조건 명령과 실행된 명령이 순서대로 계속 실행됩니다. 여기에서 각 반복에 대해 먼저 조건에서 2개의 echo 명령을 실행한 다음 세 번째 조건 명령이 z 값을 확인합니다. 5가 아니면 루프에 진입하여 주어진 명령을 실행합니다.

중단하고 계속

조건부 종료에 대한 break 문

조건문을 사용할 수도 있습니다. 만약 루프 내부. 그만큼 만약 문은 다음과 함께 사용할 수 있습니다. 부서지다 루프에서 조건부 종료를 위한 문.

x=0 까지 [[ $x -eq 10 ]] do if [[ $x -eq 5 ]] break fi echo $x ((x++)) 완료

위의 루프는 0에서 4까지의 숫자를 인쇄합니다. 그런 다음 i의 값이 5이면 루프에서 빠져 나옵니다. 이것은 명령이 특정 출력을 제공할 때 루프를 종료해야 할 때 특히 유용합니다.

조건부로 반복을 건너뛰는 Continue 문

배쉬는 또한 계속하다 특정 조건이 충족되면 루프에서 반복의 나머지 부분을 건너뛰는 문.

x=0 까지 [[ $x -eq 10 ]] do if [[ $x -eq 5 ]] 계속 fi echo $x ((x++)) 완료

위의 루프는 5를 제외하고 0에서 10까지의 숫자를 인쇄합니다. x=5 반복문이 시작될 때 루프의 나머지 코드를 건너뛰는 계속 문이 있습니다. x=6.

루프 사용: 스크립트 및 명령줄

루프 구문은 Bash 셸에서 직접 또는 실행 가능한 셸 스크립트 파일에서 사용할 수 있습니다. 비슷하다 ~을위한 그리고 동안 루프, 한 번 ~까지 루프 구문이 쉘에 입력되면 쉘은 사용자가 반복되는 명령을 계속할 수 있도록 프롬프트를 계속합니다.

또는 사용자가 이를 스크립트 파일에 저장하고 스크립트 파일을 실행할 수 있습니다.

그만큼 #!/bin/bash 시작 시 파일이 실행될 때 사용할 인터프리터를 지정합니다. Bash는 오늘날 가장 일반적으로 사용되는 셸이지만 일부 사용자는 다음과 같은 셸을 선호합니다. zsh, 이 파일의 시작 부분에서 bash 대신 지정해야 합니다.

실행 권한을 부여하려면 이 파일에 대해 다음을 실행합니다.

chmod +x test.sh

드디어, 파일을 실행하기 위해, 운영:

./test.sh

결론

그만큼 ~까지 루프는 Bash 스크립팅의 또 다른 중요한 기능입니다. 특정 프로그램 집합이 실패 상태를 반환할 것으로 예상되고 실패를 기록하거나 오류를 자세히 표시하거나 단순히 일부 대체 프로그램을 실행하기 위해 일부 다른 명령을 실행해야 하는 경우 복잡한 스크립트에서 특히 중요합니다.