Я пытаюсь создать терминал на основе GUI для инструмента. Следующий код вызывает что-то вроде этого
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
И при нажатии ENTER
открывается следующее поле редактирования:
Я попробовал открыть файл, vim
но при сохранении файла инструмент закрывается.
Я хочу узнать, как открыть файл и вернуться к инструменту при сохранении или выходе из него vim
?
решение1
exec — встроенная оболочка, как указано на bash
странице руководства (будьте терпеливы, она еще далеко)
exec [-cl] [-a name] [command [arguments]]
If command is specified, it replaces the shell. No new process is created.
рассмотреть 2 сценария
exec ls
pwd
и
ls
pwd
если вы выполните первую оболочку, exec ls
команда заменит оболочку (отбрасывая оставшийся ввод), pwd
команда никогда не будет выполнена.