读取变量,直到输出大于 BASH 中的某个值



我有一个具有数字输出的命令,但有时,由于我无法控制的错误,输出值低于 100。我需要的是读取此输出,并且仅在输出大于 100 时才继续。问题是"till 循环"只读取变量一次。即使变量随时间变化,till 循环也仅使用第一个变量读数的输出。有没有办法强制它多次读取命令输出,直到找到正确的值?

VARIABLE=$(command)
until [  ${VARIABLE} -gt 100 ]; do
  sleep 0.1
done
echo "$(VARIABLE)"

不需要花哨的东西,你只需要把命令放在循环中,然后将循环条件作为你真正想要循环的条件。

while [[ "$variable" -le 100 ]];do 
    variable=$(command) 
    sleep 0.1 
done 

你只运行一次command然后永远循环你从那个单一调用中获得的输出。 据推测,您想要的是多次运行该命令,并在每次调用后检查结果。

while true; do
    variable=$(command)    # avoid uppercase variable names
    ((variable > 100)) && break
    sleep 0.1
done
echo "$variable"           # always quoting is good form

((...))算术计算工具仅是 Bash。 如果你需要你的脚本与POSIX兼容(即在任何现代的sh变体下运行),你必须使用稍微复杂的结构([ "$variable" -gt 100 ]应该一直回到经典的Bourne shell,假设variable总是包含一个数字)。

相关内容

  • 没有找到相关文章

最新更新