[UNIX/LINUX] Shell Script 기본 - 4.while문 (1) 기본 사용법 및 예제
안녕하세요, 박현명입니다..
이번 글은 for문에 이어 그와 유사하게 사용할 수 있는 while문에 대해서 알아보도록 하겠습니다..
4. while문
(1) 기본 사용법 및 예제
while [ 조건식 ]; do // while문 시작
~
done // while문 종료
for문과 마찬가지로 while문 또한 루프 처리를 담당합니다..
사용법이 다소 다르므로 상황에 따라 적절히 선택해서 사용해야 하는데요..
이 while문 역시 조건식 뒤에 세미콜론을 사용하지 않고 사용 가능합니다..
while문의 조건식엔 보통 산술 비교 형태가 들어갑니다..
가령, 다음과 같은 식이지요..
while [ ${index} -le 10 ] // index 변수값이 10보다 작거나 같은 동안 while문 수행
do
~
done
위와 같은 조건식으로 시작하여 '~' 로 처리한 컨텐츠 부분에 그 조건식에 위배되는 순간이 오게 되면 while문을 종료하는 식이지요..
헌데 for문이든 while문이든 아주 중요한 것이 있습니다..
아실 만한 분들은 다 아시겠지만 바로 무한루프에 빠지는 경우를 방지해야 한다는 건데요..
이런 무한루프 방지를 위해 continue 나 break 문을 적절하게 사용해야 합니다..
또한, 내가 원하는 결과값을 이미 얻었음에도 불구하고 while문을 계속 수행해야할 필요는 없겠죠?
그렇게 되면 불필요하게 시스템의 리소스를 잡아먹게 되고 성능이 느려지게 됩니다..
바로 그럴 때 break 나 continue 문을 사용하는 건데요..
다음 예제를 한 번 보시죠..
index=1
while [ ${index} -le 1000 ]; do // index 값이 1000보다 작을 때까지 while문 수행
if [ ${index} -eq 10 ]; then // index 값이 10과 같으면
age=$((index + 20)) // age 변수에 (index 값 + 20)의 결과값을 할당
fi
index=$((index + 1)) // index 값 1 증분
done
echo 'I am '${age}' years old.'
위 예제를 보시면 결국 내가 원하는 값은 제일 마지막 줄에 echo 커맨드를 통하여 age 값을 포함한 한 문장을 출력하는 것이란 걸 알 수 있습니다..
허나, break 문이 존재하지 않기 때문에 index에 10이 할당되고 난 이후에도 while문을 계속 수행할 수밖에 없는 구조로 되어 있습니다..
이럴 때 다음과 같이 break 문을 사용하면 시스템 부하도 줄일 수 있고 응답 시간도 줄일 수 있습니다..
index=1
while [ ${index} -le 1000 ]; do // index 값이 1000보다 작을 때까지 while문 수행
if [ ${index} -eq 10 ]; then // index 값이 10과 같으면
age=$((index + 20)) // age 변수에 (index 값 + 20)의 결과값을 할당
break // 원하는 값을 얻었으므로 while문을 빠져나감
fi
index=$((index + 1)) // index 값 1 증분
done
echo 'I am '${age}' years old.'
위와 같이 for문이든 while문이든 루프 제어문에서 break 나 continue 를 적절히 사용해 주시면, 무한루프도 방지할 수 있고 시스템 부하도 줄일 수 있습니다..(일종의 shell script 튜닝 포인트죠..)
이상 while문에 대한 기본 사용법 및 예제였습니다..
다음 시간에는 case문에 대한 사용법에 대해 말씀 드리도록 하겠습니다..
감사합니다..
[출처] [UNIX/LINUX] Shell Script 기본 - 4.while문 (1) 기본 사용법 및 예제 (IBM SWAT - SoftWare Architect Team) |작성자 박현명