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


