swatchで指定コマンド実行(exec)時のパラメータ

スポンサーリンク

Linux上でログの監視をするためにswatchを調査時にはまったのでメモ。
swatchのアクションで、該当のログを外部コマンドに渡して実行しようと思って、試しに下記のような指定をしてみました。

watchfor   /ERROR/
    exec "echo $0"

上記は単に、ERRORという文字列が出現したら、そのログ内容を出力するといったものですが、どうもパラメータとして渡されているのが、下記のような実行されているスクリプト名となってしまいます。

/home/hoge/.swatch_script.1234

swatchの使い方は、主に@ITの下記の記事を参考にしてみました。

他のサイト見ても、「execでコマンドの引数として「$0」を指定すると、表示されるログそのものを意味する」みたいな事しか書いてなくて、
うむぅと思って、swatchperlで書かれているので、他の特殊パラメータを試してみたら、どうも下記のようにすると渡せる模様です。

watchfor   /ERROR/
    exec "echo $_"

ちなみにswatchのバージョンは3.1.1でした。
#もしかすると昔のバージョンは違ったのかもしれませんが…