「tail」出力をフィルタリングする bash スクリプトを作成しました。これは、コマンド全体です。
tail -f /var/log/asterisk/messages | awk 'match($12, /[^0-9]91([0-9]{10})@default/, a) {print a[1]}'
CLI からは正常に機能しますが、bash スクリプトに配置すると機能しません。
#!/bin/bash
phonenumber=$(tail -f /var/log/asterisk/messages | awk 'match($12, /[^0-9]91([0-9]{10})@default/, a) {print a[1]}')
echo "$phonenumber >> test.log"
何も出力しません (2135551234 は、予想される出力文字列です) ログ ファイルに書き込み、stdout だけを書き込もうとしましたが、どちらも機能しません。
「tail」の代わりに「cat」を使用してスクリプトを試してみましたが、問題なく動作します。しかし、ファイル全体の出力をダンプしたくないので、「テール」を使用します。
「tee」も使用してみましたが、役に立ちませんでした
このスクリプトの最終目標は、PBX に入ってきた電話番号を別のシステムのシリアル デバイスに送信し、CID として使用することです。
事前にご協力いただきありがとうございます