4
#test code:

#!/bin/bash
#~/test/test.sh
trap "echo 'testmessage'" DEBUG

while :
do
echo abc
sleep 6
done

#run it
~/test$sh test.sh

==============================

#result
=>   trap: DEBUG: bad trap  

==============================

?[シェル デバッグ] シグナルが "DEBUG" フェイク シグナルとして設定されているのにトラップ エラーが報告されると、トラップが機能しないのはなぜですか?

4

1 に答える 1

11

エラー メッセージ「bad trap」は、bash ではなく ash によって生成されます。sh test.shスクリプトを実行していないため、シバン行を実行する場合は無関係であり、「test.sh」を引数として「sh」というプログラムを実行しています。次に、sh プログラム (あなたの場合は ash または dash へのシンボリック リンクだと思います) は、引数で指定されたスクリプトを実行するために最善を尽くします。コマンドを実行すると、シバン行が有効に./test.shなります (最初に +x 権限が必要です)。

于 2012-07-01T07:38:26.540 に答える