You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Bash的until循环等待变量变为有效数字?

修正后的完整实现

首先,先解决你原代码里的几个问题:直接写monitor.txt | grep ...会把文件当成命令执行,这是错误的;变量名存在拼写错误(humudity→humidity);原正则只匹配单个数字,没法覆盖多位数或带小数的常见湿度数值场景。

以下是正确的实现代码:

until [[ "$humidity" =~ ^[0-9]+(\.[0-9]+)?$ ]]; do
    # 直接让grep读取目标文件,替代错误的管道写法
    humidity=$(grep -m 1 Humidity monitor.txt | cut -d' ' -f2-)
    # 若未匹配到内容,清空变量避免误判
    [ -z "$humidity" ] && unset humidity
    sleep 1
done
# 循环结束后即可使用有效数值
echo "获取到有效湿度值:$humidity"

关键细节说明

  • 修复命令执行逻辑:用grep -m 1 Humidity monitor.txt直接读取文件,既高效又不会触发"找不到命令"的错误。
  • 变量名修正:统一使用正确的变量名humidity,避免因拼写错误导致的逻辑失效。
  • 优化数值匹配规则:正则^[0-9]+(\.[0-9]+)?$可以匹配整数(如45)和小数(如62.3)两种常见的湿度数值格式。
  • 空值防护:当grep未匹配到内容时,清空变量,防止空字符串被误判为有效数值。

内容的提问来源于stack exchange,提问作者Lurch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 18:32:15