在 vi 编辑器中编辑已使用同一 shell 脚本打开的文件时,如何使用 shell 脚本捕获中断信号?

在 vi 编辑器中编辑已使用同一 shell 脚本打开的文件时,如何使用 shell 脚本捕获中断信号?

我正在尝试编写一个 shell 脚本,它可以帮助我只需单击一下即可轻松运行和编辑 java 文件。我的意思是该脚本采用 java 文件名作为参数,然后为后续操作提供三个不同的选项。我需要单击其中之一,相应地工作就完成了。我正在使用 bash shell。我提供我编写的代码,然后我将引用我的查询。

#!/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 文件,因此当我使用任何中断键时,它不会被 shell 脚本捕获,而是被 vi 编辑器视为命令。

有什么方法可以达到我想要的结果吗?

任何形式的帮助或指导将不胜感激。谢谢你!

相关内容