我正在尝试执行一个无限循环的程序,因此必须强制中断。执行完程序后,我想删除它。我可以分几个步骤来完成:
./MyProg
- Control+C
rm MyProg
但我需要经常这样做,因此我希望将步骤 1 和 3 放在一行中,以便于回忆历史记录。
我已尝试以下操作,但在每种情况下,Control+C中断都会杀死整行,而不仅仅是正在执行的程序,因此该文件永远不会被删除:
./MyProg && rm MyProg
./MyProg; rm MyProg
./MyProg || rm MyProg
如何让中断只影响正在运行的程序,而不影响整个命令行?
答案1
您可以使用trap
程序内部的机制MyProg
在程序退出后进行清理。
trap "rm MyProg" EXIT
如果 MyProg 不是 bash 脚本,您可以将程序包装在 bash 脚本中。