私はシェルスクリプトを書いています。かなり定期的に何かがファイルに書き込まれ、その後、そのファイルを読み取るアプリケーションが実行されます。私たちの会社では、ネットワークの遅延が大きく異なることがわかりました。そのため、単純なsleep 2
例では十分に堅牢ではありません.
次のような(構成可能な)タイムアウトループを書き込もうとしました:
waitLoop()
{
local timeout=$1
local test="$2"
if ! $test
then
local counter=0
while ! $test && [ $counter -lt $timeout ]
do
sleep 1
((counter++))
done
if ! $test
then
exit 1
fi
fi
}
これはtest="[ -e $somefilename ]"
. ただし、存在をテストするだけでは不十分です。特定の文字列がファイルに書き込まれたかどうかをテストする必要がある場合があります。を試し
ましたが、うまくいきtest="grep -sq \"^sometext$\" $somefilename"
ませんでした。誰かが理由を教えてもらえますか?
そのようなテストを実行するための、より詳細でない他のオプションはありますか?