while 순환 특수 용법

셸 에서 while 문장의 형식:
while  ; do
done
while 특수 용법 1:
while 순환 에 서 는 break, contine 순환 제어 문 구 를 자주 사용 합 니 다.다음은 contine 과 break 의 용법 을 소개 합 니 다.
contine: 다음 순환 에 미리 들 어 갑 니 다. 일정한 조건 을 만족 시 켜 서 촉발 되 었 을 것 입 니 다. contine 이 촉발 되면 다음 코드 세그먼트 가 더 이상 실행 되 지 않 습 니 다.
다음 의 예 로 설명 하 겠 습 니 다.
실례: 100 이내 의 홀수 의 합 을 계산한다.
스 크 립 트 내용 은 다음 과 같 습 니 다.
#!/bin/bash
#
let SUM=0
let I=0
while [ $I -lt 100 ]; do
    let I++
    if [ $[$I%2] -eq 0 ]; then
       continue
    fi
    let SUM+=$I
done
echo $SUM
[root@dnsserver ~]# ./sum.sh 
2500

contine 위의 조건 을 살 펴 보 겠 습 니 다.
if [ $[$I%2] -eq 0 ];
      continue

$I 가 짝수 라면 다음 코드 가 실행 되 지 않 고 다음 순환 으로 넘 어 가 는 것 을 의미 합 니 다.
break: 순환 을 앞 당 겨 종료
실례: 계산 1 + 2 + 3 +.. + 1000, 5000 이상 일 때 순환 을 종료 하고 덧셈 연산 을 하지 않 습 니 다.
#!/bin/bash
#
declare -i SUM=0
for I in {1..1000}; do
    let SUM+=$I
    if [ $SUM -gt 5000 ]; then
       break
    fi
done
echo $I
echo $SUM
[root@dnsserver ~]# ./sum1000.sh   
100
5050

while 특수 용법 2:
while read LINE; do
done while 는 파일 (done 뒤에 제 정 된 파일) 의 줄 마다 내용 을 읽 고 LINE 변수 에 저장 할 수 있 습 니 다.
인 스 턴 스:/etc/passwd 파일 의 사용자 가 bash 인지 여 부 를 판정 합 니 다. bash 라면 사용자 이름 을 표시 합 니 다.
#!/bin/bash
FILE=/etc/passwd
while read LINE; do
   [  `echo $LINE | awk -F : '{print $7}'` == '/bin/bash' ] && echo $LINE | awk -F : '{print $1}'
done < $FILE

스 크 립 트 실행 결과:
[root@dnsserver ~]# ./bash.sh 
root
zenge
test

본 고 는 "zengestudy"블 로그 에서 나 왔 으 니, 전 재 를 사절 합 니 다!

좋은 웹페이지 즐겨찾기