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

如何为已有参数的Bash脚本追加额外参数(适配Unity构建与TeamCity环境)

解决方案:打包额外参数为单个位置参数

由于TeamCity限制无法使用不定数量的位置参数或大序号参数,我们可以把所有需要追加的Unity参数打包成一个单独的位置参数传递给脚本,再在脚本内部解析为多个独立参数,完美适配你的需求。

步骤1:修改Bash脚本

更新你的openUnity.sh,增加对第7个参数(额外参数包)的处理,这里推荐用数组解析的方式,避免eval带来的安全风险,同时能正确处理带空格的参数:

#!/bin/bash
# 确定Unity可执行文件路径
UNITY="$1/$2/Unity.app/Contents/MacOS/Unity"

# 将第7个参数(打包的额外参数)转换为数组,自动拆分空格分隔的参数
read -ra EXTRA_ARGS <<< "$7"

# 仅在Mac系统执行Unity命令
if [ "$(uname -s)" == "Darwin" ]; then
    # 拼接原始参数和解析后的额外参数,传递给Unity
    "$UNITY" \
        -buildtarget "$3" \
        -nographics \
        -batchmode \
        -upmNoDefaultPackages \
        -serial "$4" \
        -username "$5" \
        -password "$6" \
        "${EXTRA_ARGS[@]}"
fi

步骤2:配置TeamCity的运行命令

在TeamCity的构建步骤中,把所有需要追加的Unity参数打包成单个带引号的字符串,作为第7个参数传递给脚本:

./openUnity.sh \
    $UNITY_EDITORS_PATH \
    $UNITY_VERSION \
    $PLATFORM \
    $UNITY_LICENSE \
    $UNITY_USERNAME \
    $UNITY_PASSWORD \
    "-testPlatform %testPlatform% -deviceType %deviceType% -closeAfterExecution -autoTestRun -killProcessesAfterExecution"

优化:用TeamCity参数统一管理额外参数

你可以在TeamCity中创建一个自定义参数(比如%UNITY_EXTRA_ARGS%),把所有额外Unity参数填入该参数的值:

-testPlatform %testPlatform% -deviceType %deviceType% -closeAfterExecution -autoTestRun -killProcessesAfterExecution

然后运行命令可以简化为:

./openUnity.sh $UNITY_EDITORS_PATH $UNITY_VERSION $PLATFORM $UNITY_LICENSE $UNITY_USERNAME $UNITY_PASSWORD "%UNITY_EXTRA_ARGS%"

这种方式既严格遵循了TeamCity的参数传递限制,又能灵活添加、修改Unity的启动参数,无需频繁调整脚本逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 22:43:11