나는 이 BASH 스크립트에서 사용자가 Case 문에서 Ninja Turtle을 선택하기 위해 1에서 4 사이의 값을 입력하도록 요구하도록 만들려고 합니다. 다른 값을 사용하면 $COUNTER가 0으로 유지되므로 Case 문을 다시 실행해야 합니다. 하지만 1~4 이외의 값을 입력하면 무한 루프에 빠지게 됩니다.
첫 번째 - while 루프 안에 사례 문을 중첩하는 방법은 무엇입니까?
두 번째 - 이 스크립트를 작성하여 사용자에게 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