2014-07-22 2 views
0

사용자가 bash 및 sh에서 올바른 입력을 제공하지 않으면 if 문의 시작 부분으로 돌아갈 수 있습니까?if 문 시작 부분으로 이동 하시겠습니까?

if [ "$INPUT" = "no" ]; then 
    Do something 
elif [ "$INPUT" = "yes" ]; then 
    Do something else 
else 
    echo "Input not understood" 
    Go back to beginning of if statement 
fi 

답변

2

루프를 사용해야합니다. bash에는 goto 문이 없습니다. 이 "무한"루프에서

while true; do 
    # set the value of INPUT here 
    if [ "$INPUT" = "no" ]; then 
    Do something 
    elif [ "$INPUT" = "yes" ]; then 
    Do something else 
    else 
    echo "Input not understood" 
    continue 
    fi 
    break 
done 

, 우리는 우리가 INPUT의 새 값을 얻기 위해 무언가를 루프의 상단으로 돌아갑니다 else 절에 continue 문을 사용합니다. else 절을 실행하지 않으면 루프를 종료하는 break 문을 사용합니다.

+0

Duh ... 감사합니다. – Atomiklan

2

'루프'라고합니다. 쉘에 for, while (및 until) 루프가 있습니다. 하나를 사용하십시오. 루프를 종료하려면 break, 다음 반복으로 이동하려면 continue이 있습니다.

이 경우 if 문으로 가고 싶지 않습니다. 새로운 입력이 필요합니다.

while read -r INPUT 
do 
    if [ "$INPUT" = "no" ]; then 
     Do something 
     break 
    elif [ "$INPUT" = "yes" ]; then 
     Do something else 
     break 
    else 
     echo "Input not understood" 
    fi 
done