Здравствуйте.
Есть два скрипта.

script1.sh :

#!/bin/bash

while true
do

echo -e "
Available category:
\t\t\t1. script2.sh"


wrong_count=0

while true
do
read -p "Enter number of needed category: " choosen_category
case "$choosen_category" in
"1" ) ./script2.sh
wrong_count=0
;;
* ) if [ $wrong_count = "2" ]
then
echo "ERROR! You entered wrong argument 3 times. Return to the previous menu"
break
else
echo "Wrong argument. Try again."
wrong_count=$[ $wrong_count + 1 ]
fi
;;
esac

done

done

И, второй, вызываемый в первом:

script2.sh :

#!/bin/bash

while true
do

#Clear screen
echo -en "\ec"


echo -e "
Available function:
\t\t\t1. Function1
\t\t\t2. Exit\n\n"

wrong_count=0

while true
do
read -p "Enter number of needed function: " choosen_function
case "$choosen_function" in
"1" ) echo "Function1"
wrong_count=0
;;
"2" ) exit;;
* ) if [ $wrong_count = "2" ]
then
echo "ERROR! You entered wrong argument 3 times. Return to the previous menu"
break
else
echo "Wrong argument. Try again."
wrong_count=$[ $wrong_count + 1 ]
fi
;;
esac
done
done

Есть несколько вопросов:

1)Когда в srcipt2.sh отрабатывает exit, я возвращаюсь в sript1.sh на этап «read -p „Enter number of needed.....“ , что вполне логично, из-за второго цикла while.
Можно ли сделать так, что бы при выходе со script2.sh я попадал в начало скрипта script1.sh или же нужно только убирать лишний while?
Меня „exit“ на „break 2“ и на „exit && break“. Увы, результата это не дало

2)Можно ли в script2.sh выводить сообщение „ERROR! You entered wrong argument 3 times. Return to the previous menu“ после очистки экрана без дополнительной переменной? Или же нужно только создавать дополнительную переменную, например $error_message и выводить ее после очистки, если она не пустая?








 ,






URL записи