일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- OS(operating system)
- portable
- explorer
- MS windows
- calculator
- Windows 10
- FTP
- webhard
- Linux
- 대항해시대
- program
- Update
- PC
- SSH
- network
- web
- UNIX
- Backup(Restore)
- Programming
- Crack(Serial Key)
- game
- MS Windows PE
- script
- Network Info(Tool)
- LiveCD(USB)
- Disk Partition
- Command
- apm
- javascript
- H/W
- Today
- Total
<In Story>
Shell Script 기본 - 3.while문 (1) 기본 사용법 및 예제 // [Unix] [Linux] [Script] [Programming] 본문
Shell Script 기본 - 3.while문 (1) 기본 사용법 및 예제 // [Unix] [Linux] [Script] [Programming]
<In Story, Hi story, History> 2015. 5. 25. 13:08http://ktdsoss.tistory.com/132
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문에 대한 기본 사용법 및 예제였습니다.