自杀shell脚本

自杀shell脚本

我正在尝试一个简单的测试来从脚本自身内部终止脚本。它似乎不起作用。

function testKill
{
  PID=$$
  kill $PID
  echo  hello!
}

当我运行这个函数时,

[....]$ testKill
hello!

它显然不会终止该进程。如何在发送 echo 命令之前使进程终止?

当我将这一切移至外部脚本中时,如果我直接从命令行调用脚本,它会正确终止。但是,如果我在 .bash_profile 中创建一个函数并从该函数中调用脚本,则该脚本不会被终止,而是会打印。如何将其集成到我的 .bash_profile 中?

这是在更复杂的脚本中使用的最小工作示例。

答案1

您还没有在示例中编写脚本;这是一个函数。因此,您将其应用kill到交互式 shell 会话中。交互式 shell 会忽略大多数信号,包括SIGTERM您​​发送的信号。

将函数及其调用放入脚本中并运行它。它更有可能达到您的预期。

答案2

如果您想直接在 bash 中将其用作函数(分别来自控制台),请尝试以下操作。

function testKill
{
  kill $PPID
  echo  "no hello :-/"
}

相关内容