potD

エンジニアに向けたトレンド、備忘録

【ShellScript】Ctrl+Cをつかむ

ShellScriptでCtrl+Cをつかみたいときはtrapを使います。

trap

trap コマンドはシグナルを探知し、あらかじめ指定されていた処理を実行するコマンドです。

サンプルコード

Ctrl+Cを押すと断末魔をあげます。

#!/bin/sh

trap 'echo "ぐえぇ~"; exit 0' INT

while :
do
    echo "あ~~~~~"
    sleep 1
done

実行結果

Cygwin on Windows10

$ sh detect_ctrl_C.sh
あ~~~~~
あ~~~~~
ぐえぇ~

よく使うシグナル

探知シグナルは複数指定可能です。

名称 意味
HUP 1 ハングアップ
INT 2 割り込み (Ctrl + C)
QUIT 3 プログラムの実行を中止
KILL 9 プログラムの強制終了
TERM 15 プログラムの終了