나는 이 BASH 스크립트에서 사용자가 Case 문에서 닌자 거북이를 선택하기 위해 1에서 4 사이의 값을 입력하도록 요구하도록 만들려고 합니다. 다른 값을 사용하면 $COUNTER가 0으로 유지되므로 Case 문을 다시 실행해야 합니다. 그런데 1부터 4까지가 아닌 다른 값을 입력하면 무한루프가 발생합니다.
첫 번째 - while 루프 내에 Case 문을 중첩하려면 어떻게 해야 합니까?
두 번째 - 이 스크립트에서 사용자가 1 - 4 사이의 값을 입력하도록 하려면 어떻게 해야 합니까?
#!/bin/bash
echo "What is your favorite Ninja Trutle?"
echo "1 - Raphael."
echo "2 - Leonardo."
echo "3 - Michelangelo"
echo "4 - Donatello"
read TURTLE;
COUNTER=0;
while [ $COUNTER -eq 0 ]
do
$COUNTER=$(( $COUNTER + 1 ))
case $TURTLE in
1) echo "Raphael is cool, but rude.";;
2) echo "Leonardo leads.";;
3) echo "Michelangelo is a party dude.";;
4) echo "Donatello does machines.";;
*) echo "Did you even watch the show?"
$COUNTER=0
;;
esac
done
도움을 주셔서 감사합니다.
답변1
오류는 증가하는 줄에 있습니다 COUNTER
. 이 $
기호는 변수 이름을 역참조하여 해당 값을 얻으려는 경우에 사용됩니다. 변수에 값을 할당할 때는 사용되지 않습니다. 해당 줄은 다음과 같아야 합니다.
COUNTER=$(( $COUNTER + 1 ))
그리고
COUNTER=0
또한 case
명령이 루프 내부에 있으므로 사용자 while
가 잘못된 값을 입력하면 사용자에게 다시 메시지를 표시한다고 가정합니다. 그렇다면 루프 read
안에 while
도 해당 명령문을 넣어야 합니다.