如何在Bash脚本中获取xcodebuild test的.xcresult文件路径并复制
获取xcodebuild生成的.xcresult路径并复制到指定位置
有两种可靠的方法可以实现需求,推荐优先使用第二种官方指定路径的方式:
方法一:解析xcodebuild输出提取路径
通过捕获xcodebuild test的控制台输出,用文本过滤工具提取.xcresult路径,再执行复制操作:
# 执行测试命令并保存输出 TEST_OUTPUT=$(xcodebuild test -workspace YourWorkspace.xcworkspace -scheme YourScheme -xcconfig YourConfig.xcconfig -destination 'platform=iOS Simulator,name=iPhone 14') # 从输出中筛选出.xcresult路径(匹配以/开头、以.xcresult结尾的字符串) XCRESULT_PATH=$(echo "$TEST_OUTPUT" | grep -o '/.*\.xcresult') # 验证路径有效性并复制 if [ -n "$XCRESULT_PATH" ] && [ -d "$XCRESULT_PATH" ]; then cp -R "$XCRESULT_PATH" "/your/target/directory/" echo "xcresult文件已复制到目标目录" else echo "未找到有效的xcresult文件" fi
说明:grep -o仅输出匹配到的路径部分,正则/.*\.xcresult确保精准捕获完整的xcresult目录路径。
方法二:直接指定xcresult生成路径(推荐)
利用xcodebuild自带的-resultBundlePath参数,在执行测试时直接指定结果文件的输出位置,无需事后解析:
# 定义目标路径 TARGET_XCRESULT="/your/target/directory/TestResult.xcresult" # 执行测试并指定结果包路径 xcodebuild test -workspace YourWorkspace.xcworkspace -scheme YourScheme -xcconfig YourConfig.xcconfig -destination 'platform=iOS Simulator,name=iPhone 14' -resultBundlePath "$TARGET_XCRESULT" # 验证文件是否生成 if [ -d "$TARGET_XCRESULT" ]; then echo "xcresult文件已生成在指定路径" else echo "测试执行异常,未生成xcresult文件" fi
优势:这种方式不受xcodebuild输出格式变更影响,是苹果官方支持的标准用法,稳定性更高。
内容的提问来源于stack exchange,提问作者Vladimir Amiorkov
相关产品推荐
相关产品推荐

