带 Control + C 中断的链命令

带 Control + C 中断的链命令

我正在尝试执行一个无限循环的程序,因此必须强制中断。执行完程序后,我想删除它。我可以分几个步骤来完成:

  1. ./MyProg
  2. Control+C
  3. 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 脚本中。

相关内容