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

如何用Shell脚本循环执行accuse命令统计30个账户的分区预算消耗?

批量检查账户预算消耗的Shell脚本实现

你需要批量遍历30个按accountName00XX命名的账户(从0040到0069),执行accuse -u "账户名"命令并提取结果,下面是修正后的实现方案:

原脚本的问题

你的初步思路存在几个Shell语法错误,导致无法正常运行:

  • while循环缺少终止条件,会无限执行
  • 计数器COUNTER的初始化放在循环体内,每次循环都会重置为40,永远不会递增
  • 变量赋值时不能有空格(COUNTER = 40是错误写法,应该是COUNTER=40)
  • 账户名的数字部分没有补前导零,会生成accountName40而非要求的accountName0040

推荐实现方案1:用for循环(更直观,适合固定次数的循环)

#!/bin/bash
# 遍历40到69的数字(共30个账户)
for ((i=40; i<70; i++)); do
    # 将数字格式化为4位,自动补前导零
    account_num=$(printf "%04d" $i)
    # 拼接完整账户名
    account="accountName${account_num}"
    # 执行命令并保存结果
    consume_result=$(accuse -u "${account}")
    # 输出账户名和对应的预算消耗结果
    echo "=== ${account} 预算消耗 ==="
    echo "${consume_result}"
    echo ""
done

推荐实现方案2:用while循环(符合你最初的思路)

#!/bin/bash
# 初始化计数器为起始值40
counter=40
# 循环30次(直到计数器达到70)
while [[ $counter -lt 70 ]]; do
    account_num=$(printf "%04d" $counter)
    account="accountName${account_num}"
    consume_result=$(accuse -u "${account}")
    echo "${account} 消耗结果:"
    echo "${consume_result}"
    echo "------------------------"
    # 计数器自增1
    counter=$((counter+1))
done

关键说明

  • printf "%04d" $i:确保数字格式为4位,自动补前导零,匹配账户命名规则
  • 把命令结果保存到变量consume_result中,方便后续提取特定信息(比如用grep/awk过滤关键数值,示例:echo "${consume_result}" | awk '{print $3}',根据实际输出格式调整)
  • 输出时添加分隔符,方便区分不同账户的结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 07:42:44