【发布时间】:2023-03-13 07:37:01
【问题描述】:
问题是等待文件更新,但不是无限期地更新。所以I want to check if a file has certain contents 为-
while ! grep -q $contents /path/to/file
do
sleep $timer
done
此外,我想检查计时器是否已过期,例如 $timer == 0。这里我们需要返回值中的响应,以便我可以使用 && 与另一个命令结合
! grep -q $contents /path/to/file && ls someFile
然后返回代码被输入 if 并且不再需要临时变量。
我目前正在这样做,但我希望在 while 语句本身中这样做:
# Wait for 16, 8, 4, 2, 1 seconds each to check for progress
waitTime=16
while ! grep -q $contents $LOG_FILE
do
sleep $waitTime
waitTime=$((waitTime/2))
if [ $waitTime -eq 0 ]
then
break
fi
done
【问题讨论】:
-
我是否正确地将您的问题解析为“如何在一定时间内轮询某个条件是否为真”?如果不是,您能否澄清我的解释与您要问的有何不同? (如果是这样,您介意我编辑您的问题以更清楚地反映预期的重点吗?)
-
是的,你没看错。但我想看看这是否可以通过将测试结果作为返回值
$?返回的方式来完成,以便它位于 while 循环条件本身中。 -
所有操作都有退出状态。
[ $waitTime -eq 0 ]——你已经在表演了——也有一个。
标签: linux bash return-value