我正在编写 shell 脚本,其中经常将一些内容写入文件,然后执行读取该文件的应用程序。我发现通过我们公司,网络延迟差异很大,因此一个简单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"
了,但这没有用。有人能告诉我为什么吗?
是否有其他不那么冗长的选项来执行这样的测试?