Jak uruchomić menu skryptowe po wyjściu z nowego okna terminala


0

Mam skrypt, który prosi użytkownika o wprowadzenie opcji.

Po wybraniu opcji mam ją, więc uruchamia nowy terminal i wykonuje inny skrypt dla określonej opcji.

Nadal chcę, aby skrypt menu na pierwszym terminalu pytał użytkownika o wpis, a nie wychodził ze skryptu. Bardzo mile widziane będą niektóre opinie na ten temat.

Z komentarza OP zostało skopiowane:

Oto przykład:

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
jasny
Echo
Echo
Echo
Echo
polecenia tutaj itp.
Kiedy Control + C example.sh zatrzyma wykonywanie poleceń, chcę, aby menu xterm zostało 
zamknięte, a skrypt nadal ładował menue.sh w oryginalnym terminalu.

Nie jestem pewien, czy całkowicie rozumiem. Jeśli chcesz utworzyć menu w skrypcie, prawdopodobnie używasz czegoś takiego jak `select opt ​​in" $ {options [@]} ", którego możesz następnie użyć w kolejnych częściach skryptu w tym samym terminalu - czy to podobny do tego co robisz? Proszę opublikować część swojego kodu.
Tristan Reid,

#! / binbash echo
Spokojnie,

oto przykład menue.sh #! / binbash wyczyść echo echo echo echo "1. Opcja Tutaj" echo echo -n "Wybór" odczyt wybór echo $ przypadek wyboru $ wybór w 1) /root/scriptexample/./examplenewterminal.sh ;; esac ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ egzaminplenewterminal.sh #! / bin / bash xterm -e "/ root / scriptexample /./example.sh "; bash wyczyść echo example.sh #! / bin / bash wyczyść echo echo polecenia echo tutaj echo itp., gdy kontrolujesz + c example.sh, aby zatrzymać wykonywanie poleceń Chcę, aby menu Xterm zostało zamknięte, a skrypt nadal ładował menue.sh w oryginalnym terminalu.
Spokojnie,

Komentarze należy wykorzystywać oszczędnie do ograniczonego, zwięzłego dialogu z respondentami. Kiedy zostaniesz poproszony o kod pocztowy lub w inny sposób podać informacje w celu wyjaśnienia pytania - informacje, które powinny być w pytaniu w pierwszej kolejności - twoim pierwszym instynktem powinna być edycja pytania i umieszczenie tam wymaganych informacji. Jak widać, publikowanie kodu w komentarzu nie działa zbyt dobrze. Zredagowałem twoje pytanie, aby spróbować dołączyć kod opublikowany w komentarzu. Sprawdź i edytuj , aby naprawić, jeśli występują problemy.
Scott,

Odpowiedzi:


1
  1. Twój komentarz pokazuje, menue.shzaczynając od #!/binbash. Tak powinno być #!/bin/bash. Lub, jeśli nie używasz żadnego bashkodu specyficznego, możesz po prostu użyć #!/bin/sh.
  2. Wygląda na to, że wywołujesz swoje skrypty (z poziomu innych skryptów) jako /root/scriptexample/./examplenewterminal.shi /root/scriptexample/./example.sh. Powinny to być prawdopodobnie sprawiedliwe /root/scriptexample/examplenewterminal.shi /root/scriptexample/example.sh; tzn. /./jest niepotrzebny (i chociaż wydaje mi się, że jest nieszkodliwy, jest mylący). Nie musisz go używać ./za każdym razem, gdy uruchamiasz skrypt; musisz go użyć, gdy uruchamiasz program (skrypt lub skompilowany plik binarny) w bieżącym katalogu . Zobacz Problemy podczas próby uruchomienia pliku sh z innego pliku sh .
  3. Po example.shzakończeniu examplenewterminal.shpowinien kontynuować działanie. Najwyraźniej zaczyna się kolejna bashpowłoka (której nie rozumiem); po tym kończy się, examplenewterminal.shczyści ekran, wyświetla pustą linię i kończy. Po examplenewterminal.shzakończeniu menue.shpowinien kontynuować działanie. Ale to się kończy. (Co to ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ma być? Tylko separator?) Jeśli dodasz więcej kodu menue.shpo esaclub umieścisz istniejący kod w pętli, powinien on nadal działać po examplenewterminal.shzakończeniu.
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.