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

Shell脚本出现$相关语法错误 第5行for循环$DIR变量报错原因排查

Shell脚本报错原因梳理

核心报错原因

  • 第4行DIR变量字段取值完全错误:df -Ph的输出中第5列为磁盘使用率百分比值,你要遍历的磁盘挂载目录在第6列,取错字段后后续df -Ph $i传入的是百分比值而非有效路径,命令直接执行失败。
  • 第4行DIR赋值语法错误:你在双引号内额外加了括号(),会导致DIR变量的最终值首尾携带括号字符,for循环遍历$DIR时会把括号识别为路径的一部分,不存在对应路径直接触发报错。
  • 空值未做兼容处理:如果前面df执行失败,USED变量会是空值,后续数值比较运算符-gt遇到空值会直接报语法错误。

修正后可运行的参考代码

#!/bin/bash    

LIMIT='50'     
# 正确提取所有磁盘挂载点路径
DIR=$(df -Ph | column -t | awk 'NR>1 {print $6}')        
for i in $DIR;    
do    
    USED=$(df -Ph "$i" | awk 'NR==2 {print $5}' | cut -d"%" -f1)    
    # 先判断USED为有效数字再做比较,避免空值报错
    if [[ "$USED" =~ ^[0-9]+$ && "$USED" -gt "$LIMIT" ]];
    then
       # 此处填写超过阈值后的处理逻辑
       echo "挂载点${i}使用率已超过${LIMIT}%,当前使用率为${USED}%"
    fi    
done

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 16:48:04