![带 Control + C 中断的链命令](https://linux22.com/image/29894/%E5%B8%A6%20Control%20%2B%20C%20%E4%B8%AD%E6%96%AD%E7%9A%84%E9%93%BE%E5%91%BD%E4%BB%A4.png)
我正在尝试执行一个无限循环的程序,因此必须强制中断。执行完程序后,我想删除它。我可以分几个步骤来完成:
./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 脚本中。