Здравствуйте.
Есть два скрипта.
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 и выводить ее после очистки, если она не пустая?