为什么我的疏水阀不起作用?

use*_*667 2 bash bash-trap

我写了下面的脚本:

#!/bin/bash
sleep 15

function_signalr()
{
date
date | awk '{printf "%-15s\n", $2}' 
}

trap "function_signalr" 10
Run Code Online (Sandbox Code Playgroud)

当我通过“进程&”启动进程时,将给出PID。我确实杀死了-10 PID,但是我的陷阱不起作用。该进程被杀死,但陷阱没有弹出。没有给出日期消息。如有任何建议,我将不胜感激。

dev*_*ull 5

trap无法使用,因为外壳尚不了解。

您需要定义trap函数,设置trap,然后编写代码。

#!/bin/bash

function_signalr()
{
date
date | awk '{printf "%-15s\n", $2}' 
}

trap "function_signalr" 10

# Code follows now
sleep 15
Run Code Online (Sandbox Code Playgroud)

此外请注意,这sleep是阻塞的,这意味着如果您这样做,kill -10 PID则只有在完成后trap才能执行sleep