gpt4 book ai didi

linux - 如何检查条件是否为真作为返回值?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:06:10 25 4
gpt4 key购买 nike

问题是等待文件更新,但不是无限期。所以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

最佳答案

对于数学表达式,使用 (( )) 在算术上下文中对其求值。

#!/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 的值为正整数时,(( waitTime )) 的退出状态为 0

关于linux - 如何检查条件是否为真作为返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46309934/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com