이 스크립트는 정상적으로 실행되고 있지만 오타가 있어서 스크립트를 다시 실행하고 싶다면 어떻게 해야 합니까?
#! /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