为什么我的陷阱不起作用?

时间:2014-04-06 13:13:52

标签: bash bash-trap

我写了以下脚本:

#!/bin/bash
sleep 15

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

trap "function_signalr" 10

当我通过“process&”开始这个过程时它运行,给出PID。 我确实杀了-10 PID,但我的陷阱不起作用。这个过程被杀死了,但陷阱没有出现。没有给出日期消息。我会很感激任何建议。

1 个答案:

答案 0 :(得分:4)

您的trap无效,因为shell尚未了解它。

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

#!/bin/bash

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

trap "function_signalr" 10

# Code follows now
sleep 15

此外请注意,sleep是阻止的,这意味着如果您执行kill -10 PID,那么trap将无法执行,直到sleep完成。