Ich versuche, eine terminalbasierte GUI für ein Tool zu erstellen. Der folgende Code ruft so etwas auf
while true
do
CHOICE=$(dialog --keep-window --clear --no-shadow \
--backtitle "$BACKTITLE" \
--title "$TITLE" \
--menu "$MENU" \
$HEIGHT $WIDTH $CHOICE_HEIGHT \
"${OPTIONS[@]}" \
2>&1 >/dev/tty)
clear
case $CHOICE in
#*) exec vim "$(echo $CHOICE | cut -d ':' -f 1)" ; ;;
*) filename="$(echo $CHOICE | cut -d ':' -f 1)"
#mkfifo "$TOMATO_DIR/cf"
if [ ! -z $filename ] ; then
dialog --editbox $filename 60 80
#cp "$TOMATO_DIR/cf" $filename
#rm -f ${INPUT}
else
clear
exit 0
fi
clear ;;
esac
done
Und beim Drücken ENTER
öffnet sich das folgende Bearbeitungsfeld:
Ich habe versucht, die Datei zu öffnen, vim
aber beim Speichern der Datei werden die Tools beendet.
Ich möchte wissen, wie ich die Datei öffne und nach dem Speichern oder Beenden zum Tool zurückkehre vim
?
Antwort1
exec ist laut bash
Manpage ein Shell-Builtin (habe Geduld, es ist weit weg)
exec [-cl] [-a name] [command [arguments]]
If command is specified, it replaces the shell. No new process is created.
Betrachten Sie 2 Skript
exec ls
pwd
Und
ls
pwd
Wenn Sie beispielsweise die erste Shell ausführen, exec ls
wird der Befehl die Shell ersetzen (die verbleibende Eingabe wird verworfen), pwd
der Befehl wird nie ausgeführt.