Dialogを使用してvimでファイルを編集する

Dialogを使用してvimでファイルを編集する

ツール用のターミナルベースの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 は、man ページにあるようにシェルの組み込みコマンドです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コマンドは実行されません。

関連情報