입력이 누락된 경우 루프 프로그램

입력이 누락된 경우 루프 프로그램

이 스크립트는 정상적으로 실행되고 있지만 오타가 있어서 스크립트를 다시 실행하고 싶다면 어떻게 해야 합니까?

#! /bin/bash
#! userInput - a script that reads in text and outputs it immediately

echo "Would you like to input some text? Y/N"
        read request
if [[ $request = Y ]]; then
        echo "Please input some text"
                read input
        echo $input
elif [[ $request = N ]]; then
        echo "Thank You"
else
        echo "Invalid Input - Please Input Y for yes or N for no"
fi

답변1

그것이 select목적입니다.

PS3="Would you like to input some text? <Y/N>   ]"
select choice in "Y" "N"; do
   case $choice in
      "Y")
          echo -n "Please input some text >"
          read input
          echo "$input"
          break
          ;;
      "N")
          echo "Very well."
          break
          ;;
      *)
          echo "Invalid response."
          ;;
    esac
done

답변2

해결하려는 문제를 모델링하기 위해 제어 흐름을 구성하는 것이 좋습니다. 사용자가 영원히 종료하고 싶지 않은 시점을 보고 싶습니다.

#!/bin/bash

echo -n "Would you like to input some text (Y/N): "
read request

while [[ "${request}" != "N" ]]; do
    if [[ "${request}" == "Y" ]]; then
        echo -n "Please input some text: "
        read input

        echo "You entered '${input}'"
    else
        echo "Invalid input: '${request}'"
    fi

    echo -n "Would you like to input some text (Y/N): "
    read request
done

echo "Thank you"

답변3

어때요?

#!/bin/bash
# userInput - a script that reads in text and outputs it immediately

while true; do
    echo "Would you like to input some text? Y/N"
    read request

    if [[ $request = Y ]]; then
        echo "Please input some text"
        read input
        echo $input
        break
    elif [[ $request = N ]]; then
        echo "Thank You"
        break
    else
        echo "Invalid Input - Please Input Y for yes or N for no"
    fi
done

답변4

그렇지 않고 실제로 스크립트를 다시 실행하려면 다음을 수행하세요.

else
 exec $0

관련 정보