如何在tail -f命令后继续运行脚本

Ric*_*ard 6 bash signals tail

我有以下脚本:

tail -f nohup.out
echo 5
Run Code Online (Sandbox Code Playgroud)

当我按下Ctrl+ Ctail -f,脚本停止运行:5不打印.echo 5停止命令后如何运行tail命令?

Gil*_*il' 8

Ctrl+ CSIGINT信号发送到前台进程组中的所有进程.在tail运行时,进程组由tail进程和运行脚本的shell 组成.

使用trap内置函数覆盖信号的默认行为.

trap " " INT
tail -f nohup.out
trap - INT
echo 5
Run Code Online (Sandbox Code Playgroud)

陷阱的代码不执行任何操作,因此如果shell echo 5收到SIGINT,则会进入下一个命令().请注意,第一行中的引号之间有一个空格; 任何无效的shell代码都会这样做,除了一个空字符串,这意味着完全忽略信号(这不能使用,因为它也会导致tail忽略信号).第二次调用trap恢复默认行为,以便在第三行之后a Ctrl+ C将再次中断脚本.