自殺シェルスクリプト

自殺シェルスクリプト

スクリプト自体内でスクリプトを終了するための簡単なテストを試しています。うまくいかないようです。

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

この機能を実行すると、

[....]$ testKill
hello!

明らかに、プロセスは終了しません。 echoコマンドを送信する前にプロセスを終了するにはどうすればよいですか?

これらすべてを外部スクリプトに移動するときにコマンドラインから直接スクリプトを呼び出すと、正しく終了します。ただし、.bash_profileに関数を作成してその関数からスクリプトを呼び出すと、スクリプトは終了せずに印刷されます。これを私の.bash_profileにどのように統合しますか?

これは、より複雑なスクリプトで使用するための最小限の作業例です。

答え1

あなたの例ではスクリプトを書いていません。したがって、これをkill対話型シェルセッションに適用します。対話型シェルは、SIGTERMユーザーが送信するシグナルを含むほとんどのシグナルを無視します。

関数とその呼び出しをスクリプトに入れて実行します。期待に応える可能性が高いです。

答え2

bashで(それぞれコンソールで)直接関数として使用するには、次のことを試してください。

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

関連情報