viエディタで同じシェルスクリプトを使用して開いたファイルを編集するときに、シェルスクリプトを使用して割り込み信号をキャプチャするにはどうすればよいですか?

viエディタで同じシェルスクリプトを使用して開いたファイルを編集するときに、シェルスクリプトを使用して割り込み信号をキャプチャするにはどうすればよいですか?

ワンクリックでJavaファイルを簡単に実行および編集するのに役立つシェルスクリプトを作成しようとしています。私は、スクリプトがJavaファイル名を引数として使用し、後続の操作に3つの異なるオプションを提供するということです。そのうちの1つをクリックする必要があり、それに応じて作業が完了します。私はbashシェルを使用しています。私が書いたコードを提供し、クエリを引用します。

#!/bin/sh


if [ $# -eq 0 -o $# -gt 1 ] ; then
    echo "Provide single filename"
    exit
fi

file="$1"
if echo "$file" | grep ".java$" >/dev/null ; then
    file=`expr "$file" : '\(.*\).java'`
fi
file=`echo "$file" | tr -d '.'`
file_with_ext=$file.java

response=`kdialog --radiolist "What do you want to do?" 1 "Run Program" on 2 "Open with vi" off 3 "Open with vi and then Run" off`

if [ -z $response ] ; then
    exit
fi

if [ $response -eq 2 -o $response -eq 3 ] ; then
    if [ ! -s "$file_with_ext" ] ; then
        initcode="public class $file{
    public static void main(String[] args){
        
    }
}
"
        echo "$initcode" > $file_with_ext
    fi
    vi $file_with_ext
fi

if [ $response -eq 1 -o $response -eq 3 ] ; then
    javac $file_with_ext
    if [ $? -eq 0 ] ; then
        java $file_with_ext 2>/dev/null
    if [ $? -ne 0 ] ; then
        java $file
        fi
    fi
fi

これで、このスクリプトにさらに多くの機能を追加したいと思います。特定のキーの組み合わせを押すたびに、スクリプトがJavaプログラムを実行し(コンパイル後)、他の端末に出力を提供したいと思います。テキストエディタなしで簡単にできます。しかし、viエディタでjavaファイルを編集しているため、breakキーを使用するとシェルスクリプトにキャプチャされず、viエディタではコマンドとして扱われます。

私が望む結果を得る方法はありますか?

どんな助けや指導にも感謝します。ありがとうございます!

ベストアンサー1

おすすめ記事