トラップハンドラが動作しませんか?

トラップハンドラが動作しませんか?

下のトラップに問題があるのでしょうか?

trap cleanup SIGINT

cleanup() {
            echo "Exiting script ..."
        }

echoクリックしてもコマンドは表示されません。Ctrl+c

このコードスニペットは、無限ループを持つ大規模スクリプトの一番下にありますwhile

$ bash --version
GNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu)

答え1

トラップは押すときに有効/装着する必要があります。Ctrl+Cそれ以外の場合(明らかに)トリガされません。この時点で関数も定義する必要があります。これは、コードをスクリプトの上部(最初の部分)に移動することを意味します。

また、おそらく次の関数を定義する必要があります。今後トラップを取り付けます。それ以外の場合、トラップがその間にトリガーされると、「見つかりません」エラーが発生します。

例:

#!/bin/bash

cleanup() { echo 'Exiting script ...'; }

trap cleanup SIGINT

sleep 300

関連情報