У меня есть скрипт, который запрашивает у пользователя ввод параметров.

При выборе опции у меня так, что он запускает новый терминал и выполняет другой сценарий для указанной опции.

Я все еще хочу, чтобы скрипт меню на первом терминале запрашивал ввод данных пользователем, а не выходил из скрипта. Некоторые отзывы по этому вопросу будут с благодарностью.

Следующее было скопировано из комментария ОП:

Вот пример:

menue.sh

#!/binbash
clear
echo
echo
echo
echo "1. Option Here"
echo
echo -n "Choice"
read choice
echo $choice
case $choice in
  1) /root/scriptexample/./examplenewterminal.sh
     ;;
esac
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

examplenewterminal.sh

#!/bin/bash
xterm -e "/root/scriptexample/./example.sh"
bash
clear
echo

example.sh

#!bin/bash
clear
echo
echo
echo
echo
commands here, etc.
When you Control + C example.sh to stop commands executing, I want the xterm menu
to close and the script to continue to load the menue.sh in the original terminal.

1 ответ1

1
  1. Ваш комментарий показывает menue.sh начинающийся с #!/binbash .  Это должно быть #!/bin/bash .  Или, если вы не используете какой-либо специфичный для bash код, вы можете просто использовать #!/bin/sh .
  2. Похоже, вы называете свои скрипты (из других скриптов) как /root/scriptexample/./examplenewterminal.sh и /root/scriptexample/./example.sh .  Это, вероятно, должны быть просто /root/scriptexample/examplenewterminal.sh и /root/scriptexample/example.sh ; то есть //./ не нужен (и, хотя я думаю, что он безвреден, он сбивает с толку беспорядок).  Вам не нужно использовать ./ всякий раз, когда вы запускаете скрипт; вам нужно использовать его, когда вы запускаете программу (скрипт или скомпилированный бинарный файл) в текущем каталоге .  См. Проблемы при попытке выполнить sh-файл из другого sh-файла .
  3. Когда example.sh завершается, examplenewterminal.sh должен продолжать работать.  Это, очевидно, запускает другую оболочку bash (чего я не понимаю); после того, как это заканчивается, examplenewterminal.sh очищает экран, отображает пустую строку и завершается.  Когда examplenewterminal.sh завершает работу, menue.sh должен продолжать работать.  Но тогда это заканчивается.  (Что такое ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  Просто разделитель?)  Если вы добавите больше кода в menue.sh после esac или поместите существующий код в цикл, он должен продолжать работать после завершения examplenewterminal.sh .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .