mail
bashスクリプトの関数内から実行しようとすると、フォーク爆弾のようなものが作成されます。明確にするために、これは問題を作成します:
#!/bin/bash
mail() {
echo "Free of oxens" | mail -s "Do you want to play chicken with the void?" "example@example.org"
}
mail
exit 0
場合によっては、コマンドを強制終了するだけで子プロセスを強制終了することもありますが、強制する必要がある場合もありますkillall -9
。
メールが送信されたかどうかは関係ありません。フォーク爆弾は、いずれかの方法で作成されます。そして、のような終了コードのチェックを追加することは役に立たないようですif ! [ "$?" = 0 ]
。
ただし、以下のスクリプトは意図したとおりに機能し、エラーを出力するか、メールを送信します。
#!/bin/bash
echo "Free of oxens" | mail -s "Do you want to play chicken with the void?" "example@example.org"
exit 0
なぜこれが起こるのですか?そして、mailコマンドの終了コードをどのようにチェックしますか?
10
これは再帰と呼ばれます。
—
Jakuje