ファイル内で無限に実行されるループが必要ですが、常に最後の行に一致する文字列が含まれていることを確認し、一致する文字列がある場合はその行をエコーしてループを実行し続けます。今持っているのはうまくいきません。 grepエラーが発生します。
#! /bin/bash
echo "Script is starting......."
FILE="/Users/shubhamsinha/Desktop/new_test.log"
# (tail -n1) < FILE
STRING="MYNAME"
while : ;do
Last = tail -F "$FILE"
grep -q "$STRING" "$Last" && echo "FOUND" && break
sleep 5
done
ベストアンサー1
スクリプトの作成を気にしないでください。これにはスクリプトではなく行が必要です。
新しいツールを作成するのではなく、既存のツールを活用して必要な作業を実行してください。
コマンドラインに次のように入力します。
tail -f -n 1 /Users/shubhamsinha/Desktop/new_test.log | grep MYNAME
説明する:
tail -f
指定されたファイルで永久に実行され、ファイルに追加された各追加行を出力します。
-n 1
つまり、tail
起動時にファイルのデフォルトの最後の10行ではなく、現在のファイルの最後の行のみが出力されます。
|
パイプラインだ。パイプを理解していない場合は、すべてを捨ててパイプを理解するまで、より多くのシェルスクリプトを作成しないでください。 (長い時間はかかりませんが、批判的良いスクリプトを書いてください。 )
grep MYNAME
入力にMYNAMEパターンを含む行のみを印刷します。