2012-10-25 2 views
3
while [condition] 
do 
    for [condition] 
    do 
    if [ "$x" > 3 ];then 
     break 
    fi 
    done 

    if [ "$x" > 3 ];then 
    continue 
    fi 
done 

위의 스크립트에서 나는 "$x" > 3을 두 번 테스트해야합니다. 사실 내가 처음 테스트 할 때, 사실이라면 나는 while 루프를 벗어나 다음 while 루프를 계속하고 싶다.쉘 스크립트 : 중첩 루프 및 계속

외부 루프를 피하기 위해 continue 2과 같은 것을 사용할 수있는 더 간단한 방법이 있습니까?

+2

왜'내부 루프에서 2' 계속 사용하지 : 귀하의 경우

이 스크립트는 다음과 같이 더 간결하게 쓸 수있다? –

+0

레이블 및 goto? :) – alex

+0

거기에 계속 2 ???? – user1769686

답변

1

"break"와 "continue"는 "goto"의 친척이며 일반적으로 프로그램의 제어 흐름에서 도약을 유발하는 이름이없는 조건을 소개하므로 피해야합니다. 프로그램의 다른 부분으로 이동할 필요가있는 조건이 존재하는 경우, 다음 사람은 그 조건에 이름을 부여해 주셔서 감사 드리며 알아낼 필요가 없습니다!

dataInRange=1 
while [condition -a $dataInRange] 
do 
    for [condition -a $dataInRange] 
    do 
    if [ "$x" > 3 ];then 
     dataInRange=0 
    fi 
    done 
done