Самое простое, что нужно сделать - это зацикливаться вечно и прерываться, когда пользователь выходит:
while true
do
read -p "Continue to loop? " answer
[ "n" = "$answer" ] && break
done
echo "Now I'm here!"
Команда break
выводит вас из текущего цикла и продолжает сразу после цикла. Нет необходимости в переменной flag .
Кстати:
[ "n" = "$answer" ] && break
То же, что и
if [ "n" = "$answer" ]
then
break
fi
Обратите внимание на -p
для приглашения в команде read
. Таким образом, вы можете запросить и прочитать переменную одновременно. Вы также можете использовать \c
в выражениях echo для подавления Новой строки или использовать printf
, который не выполняет NL :
read -p "What do you want? " wants #Prompt on the same line as the read
echo "What are your desires? \c" #Prompt on the same line as the read
read desires
printf "What are your hopes? " #Prompt on the same line as the read
read hopes
Надеюсь, это поможет.