관리 메뉴

IT창고

쉘 스크립트 while문 본문

프로그래밍/Shell Script

쉘 스크립트 while문

방구석여포 2020. 11. 5. 00:14

이번에는 while문에 대해 알아보도록 하겠습니다.

while문은 정의한 명령어를 반복하며 종료상태를 받으면 반복을 중단합니다. 이렇게 보면 for문이 생각나는데 if문과도 비슷한 점이 존재합니다

 

while 조건문 
do
  수행할 조건 및 명령어
  ~
done

while문 구문 예시는 위와 같습니다 for문과 같이 루프를 하며 동시에 if문처럼 조건문을 사용하게 됩니다.

 

간단한 while문 쉘 스크립트를 확인해보도록 하겠습니다.

위의 사진과 같은 결과는 아래의 소스코드에서 확인 가능한 쉘 스크립트로 만들어졌습니다.

#!/bin/bash

gsk=100

while [ $gsk -gt 90 ] 
do
  echo $gsk
  gsk=$[ $gsk - 1 ]

done

while문에 조건으로 gsk 변수 값이 90이면 루프가 중지되는 쉘 스크립트 입니다. 

위의 사진과 같은 결과는 아래의 소스코드에서 확인 가능한 쉘 스크립트로 만들어졌습니다.

#!/bin/bash

while [ `ps -ef | grep -v grep | grep httpd | head -1 | wc -l` -eq 0 ]
do
   echo "Apache 프로세스가 동작하면 스크립트가 중지 됩니다."
   echo ""
   sleep 2

   if [ `ps -ef | grep -v grep | grep httpd | head -1 | wc -l` -eq 1 ]; then
     echo "Apache 프로세스가 동작 합니다!"
   fi

done

while문은 보통 산술식과 함께해서 자주 사용됩니다 위의 사진은 이러한걸 응용해서 Apache 프로세스 작동을 감시하는 스크립트를 만들어 보았습니다. Apache 프로세스가 구동되지 않을 경우 2초 간격으로 미작동 echo문을 출력해주며 작동할 경우 작동중 메세지를 한번 출력됨과 동시에 while문 루프가 끝나게 됩니다. 

 

마지막으로 until문에 대해 알아보겠습니다 

while문과 같지만 차이점은 while문과는 반대로 조건문이 참이면 루프가 종료 됩니다.

 

간단하게 스크립트를 직접 실행해서 확인해보도록 하겠습니다.

위의 사진과 같은 결과는 아래의 소스코드에서 확인 가능한 쉘 스크립트로 만들어졌습니다.

#!/bin/bash

until [ `ps -ef | grep -v grep | grep httpd | head -1 | wc -l` -eq 1 ]
do
   echo "Apache 프로세스가 동작하면 스크립트가 중지 됩니다."
   echo ""
   sleep 2

   if [ `ps -ef | grep -v grep | grep httpd | head -1 | wc -l` -eq 1 ]; then
     echo "Apache 프로세스가 동작 합니다!"
   fi

done

2번쨰로 만든 스크립트와 비교하면 그저 while문 대신 until로 바꾸고 조건식을 1로 바꾸었을 뿐 입니다. 

while, until 큰 차이는 없으므로 쉘 스크립트 제작 시 편한걸로 사용하면 됩니다.

'프로그래밍 > Shell Script' 카테고리의 다른 글

쉘 스크립트 for문  (0) 2020.11.03
쉘 스크립트 if문 3  (0) 2020.10.19
쉘 스크립트 if문 2  (0) 2020.10.17
쉘 스크립트 if문 1  (0) 2020.10.10
쉘 스크립트 기초 2  (0) 2020.10.07
Comments