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

如何在Shell脚本中循环执行SteamCMD的模组下载命令

DayZ模组批量下载Shell脚本优化方案

原脚本仅支持单个模组下载,优化后实现批量遍历模组ID列表下载,并且只启动一次SteamCMD、仅执行一次+quit,避免重复启动工具的开销。

修改后的完整脚本

#!/bin/bash

# 定义需要下载的DayZ模组ID列表,可自行添加/删除
MOD_IDS=(1559212036 123456789 987654321)
# DayZ的Steam应用ID固定为221100
DAYZ_APP_ID="221100"

if [ "$ModEnabled" == "1" ]; then
    # 初始化SteamCMD命令参数
    STEAMCMD_ARGS="+force_install_dir ${HOME}/servers/dayzserver/ +login \"${SteamUser}\""
    
    # 遍历模组ID列表,拼接所有下载命令
    for MOD_ID in "${MOD_IDS[@]}"; do
        STEAMCMD_ARGS+=" +workshop_download_item ${DAYZ_APP_ID} ${MOD_ID} validate"
    done
    
    # 添加退出命令,执行完整的SteamCMD调用
    STEAMCMD_ARGS+=" +quit"
    
    # 执行批量下载
    ${HOME}/servers/steamcmd/steamcmd.sh ${STEAMCMD_ARGS}
    
    printf "所有模组下载完成\n"
else
    echo "ModEnabled变量未设置为1,跳过下载"
fi

关键优化说明

  • 模组ID管理:MOD_IDS数组支持添加任意数量的创意工坊ID,用空格分隔即可,维护更方便
  • 单次SteamCMD调用:通过参数拼接把所有下载命令整合为一次调用,彻底解决多次+quit的问题,完全符合SteamCMD的执行逻辑
  • 变量安全处理:给ModEnabled、SteamUser等变量添加双引号,避免空变量或含空格的变量导致脚本报错
  • 可选配置:validate参数用于验证模组文件完整性,不需要的话可直接从拼接命令中删除

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 06:02:35