というファイルがありますfile.txt
。内容は次のとおりです。
sunday
monday
tuesday
grep
上記のパターンが見つからない場合は、よく繰り返される次のスクリプトを作成しました。
until cat file.txt | grep -E "fdgfg" -C 9999; do sleep 1 | echo "working..."; done
しかし、私の要件は、上記のスクリプトがパターンに記載されているテキストがgrep
消えるまで繰り返す必要があるということです。 file.txt
私はL
grepでこのフラグを使ってみました。しかし、それはうまくいきませんでした。
until cat file.txt | grep -EL "sunday" -C 9999; do sleep 1 | echo "working..."; done
ベストアンサー1
grep
マニュアルページから:
EXIT STATUS
Normally the exit status is 0 if a line is selected, 1 if no lines were
selected, and 2 if an error occurred. However, if the -q or --quiet or
--silent is used and a line is selected, the exit status is 0 even if
an error occurred.
したがって、行が存在する場合、終了状態はゼロです。 Bash では 0 が true であるため (プログラムの標準 "成功" 終了状態が 0 であるため) 実際には次のような内容がなければなりません。
#!/bin/bash
while grep "sunday" file.txt > /dev/null;
do
sleep 1
echo "working..."
done
一体なぜsleep 1
パイプラインが欲しいのでしょうかecho
?作業中はあまり意味がありません。インラインにしたい場合は書き込むことができ、遅延の前に実行するには、sleep 1; echo "working..."
次のように呼び出しの前に置くことができます。echo
sleep
echo "working..."; sleep 1