自杀shell脚本

avi*_*rto 1 shell kill shell-script

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

function testKill
{
  PID=$$
  kill $PID
  echo  hello!
}
Run Code Online (Sandbox Code Playgroud)

当我运行这个函数时,

[....]$ testKill
hello!
Run Code Online (Sandbox Code Playgroud)

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

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

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

roa*_*ima 6

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

将函数及其调用放在脚本中并运行它。做你期望的事情的可能性要大得多。