我有一个具有数字输出的命令,但有时,由于我无法控制的错误,输出值低于 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
总是包含一个数字)。