2017-03-02 11 views
0

루프 제어를 시도 중입니다. while 루프와 for 루프가 있고 if 루프 중 몇 개가 if 루프 중 하나를 만족하면 for 루프를 종료해야하고 while 루프를 종료해야 if 루프를 종료하여 for 루프 반복을 계속 수행합니다현재 if 루프에서 깨는 루프 제어

LIMIT=100 
while [ "count" -le "$LIMIT" ] 
do 
    for i in 1 2 3 4 5 
    do 
     var a 
     var b 
     var c 
     var d 
     if [ $d -eq 1 ] && [ $a == Done ] && [ $b -eq 0 ] 
     then 
     echo "$c" | tr '\n' '\t' 
     echo "Successful" 
     break 2  # Need to exit entire for loop 
     elif [ $d -eq 0 ] && [ $a == Done ] && [ $b -eq 0 ] 
     then 
     break   # Need to go to next iteration of for 
     elif [ $a == Active ] 
     then 
     echo "Active" # Need to exit entire for loop 
     break 2 
     elif [ $d -eq 1 ] && [ $a == Done ] && [ $b -gt 0 ] 
     then 
     echo "Fail" # Need to exit entire for loop 
     break 2 
     elif [ $a == Queued ] 
     then 
     echo "Queued" # Need to exit entire for loop 
     break 2 
     else 
     echo "Nothing" 
     fi 
    done 
done 

처음으로 loop가 true 일 때 어떤 이유로 든 종료됩니다.

답변

0

사실, 이미 중단을 사용하고 있었고, 이미 종료 된 것처럼 하나의 중단을 사용하면 루프를 완전히 종료하고 다음 반복을 위해 if 루프를 계속 사용해야합니다.

그래서 코드가 있어야한다

LIMIT=100 
while [ "count" -le "$LIMIT" ] 
do 
    for i in 1 2 3 4 5 
    do 
     var a 
     var b 
     var c 
     var d 
     if [ $d -eq 1 ] && [ $a == Done ] && [ $b -eq 0 ] 
     then 
     echo "$c" | tr '\n' '\t' 
     echo "Successful" 
     break    # will exit entire for loop 
     elif [ $d -eq 0 ] && [ $a == Done ] && [ $b -eq 0 ] 
     then 
     continue   # will go to next iteration of for 
     elif [ $a == Active ] 
     then 
     echo "Active" 
     break    # will exit entire for loop 
     elif [ $d -eq 1 ] && [ $a == Done ] && [ $b -gt 0 ] 
     then 
     echo "Fail" 
     break    # will exit entire for loop 
     elif [ $a == Queued ] 
     then 
     echo "Queued" 
     break    # will exit entire for loop 
     else 
     echo "Nothing" 
     fi 
    done 
done