问题是等待文件更新,但不是无限期。所以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
答案 0 :(得分:2)
对于数学表达式,请使用(( ))
在算术上下文中对其进行评估。
#!/usr/bin/env bash
# ^^^^- not /bin/sh; (( )) -- vs $(( )) -- is a bashism.
waitTime=16
while (( waitTime )) && ! grep -q -e "$contents" /path/to/file; do
sleep "$waitTime"
waitTime=$(( waitTime / 2 ))
done
此时,(( waitTime ))
的退出状态为0
当且仅当waitTime
的值为正整数时。