我试图在 bash 脚本中有一个交互式程序:
my_program
我希望能够用'Ctrl + c'关闭它。但是当我这样做时,我的脚本也会关闭。
我知道。
trap '' 2
my_program
trap 2
但在这种情况下,我无法my_program
使用 Ctrl + c 关闭。
您知道如何在程序上允许 Ctrl + c,但不关闭运行它的脚本吗?
编辑:添加示例
#!/bin/bash
my_program
my_program2
如果我使用 Ctrl + c 关闭my_program
,my_program2
则永远不会执行,因为整个脚本都已退出。
您应该使用
trap true 2
ortrap : 2
代替trap '' 2
. 这就是 bash shell 中的“帮助陷阱”所说的:例子:
-
您可以通过将陷阱命令作为其操作参数来将陷阱重置为其默认值。如果您在subshell中执行此操作,则不会影响父 shell 中的陷阱。在您的脚本中,您可以对需要使用 Ctrl-C 中断的每个命令执行此操作:当您使用Crtl+C时,您会中断程序(“杀死”它)。
您可能正在寻找的是暂停您的程序(“暂停”它)。为此,您可以使用Crtl+ Z。
程序暂停后,您可以使用
jobs
. 例如:[1]+ Stopped ./foobar
这里我只有一份工作,工作 #1,但可以有不止一份 - 每个工作都有自己的编号。您可以使用许多命令来控制暂停的进程,
例如和。将在后轮重新启动作业#1 将在前轮重新启动作业#1
bg
fg
kill
bg %1
fg %1
g roundkill %1
将杀死作业 #1请注意,如果您只有一个活动作业 ,则可以使用
bg
并且不带参数。fg