rm -rf /etc/XXX.pid
シェルスクリプトの実行が途中で中断されたときに、「 」のようなコマンドを起動したい。ここで何をすべきかCTRL+C
誰か助けてくれますか?
質問する
6533 次
2 に答える
15
多くの人にとってショックかもしれませんが、bash
ビルトインを使用してtrap
シグナルをトラップすることができます:-)
まあ、少なくともトラップできるものですが、CTRL-C は通常、INT
信号に関連付けられています。シグナルをトラップして、任意のコードを実行できます。
次のスクリプトは、テキストの入力を求め、それをエコー バックします。場合によっては、INT
信号を生成すると、単にうなり声を上げて終了します。
#!/bin/bash
exitfn () {
trap SIGINT # Restore signal handling for SIGINT
echo; echo 'Aarghh!!' # Growl at user,
exit # then exit script.
}
trap "exitfn" INT # Set up SIGINT trap to call function.
read -p "What? " # Ask user for input.
echo "You said: $REPLY"
trap SIGINT # Restore signal handling to previous before exit.
テスト実行のトランスクリプトが続きます (完全に入力された行、入力前に CTRL-C を押した行、および CTRL-C を押す前に部分的に入力された行):
pax> ./testprog.sh
What? hello there
You said: hello there
pax> ./testprog.sh
What? ^C
Aarghh!!
pax> ./qq.sh
What? incomplete line being entere... ^C
Aarghh!!
于 2013-02-05T07:40:02.157 に答える
3
trap
SIGINT
Ctrl-C が押されたときに生成されるシグナルなど、スクリプト内のシグナルをキャッチするために使用されます。
于 2013-02-05T07:25:55.613 に答える