ios - Xcode Build Script (Build Phases->Run Script) Increment Build Version 基于用户名(用户)

标签 ios xcode bash unix build

编译项目时,当系统用户名匹配时,此脚本应将 Xcode 项目的构建版本递增 1。请记住,这些只是 Target->Build Phases->Run Script in Xcode 中脚本(不是 Applescript、Python 或 Perl)中的 Unix 命令。

我在终端中完成了“echo $USER”。这会很好地打印登录用户的用户名,它与我在第二个代码块的条件语句中放置的字符串相同。

第一段代码有效。第二个添加了条件语句,但没有。

#!/bin/bash
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"


#!/bin/bash
username=$USER
if [ username == "erik" ]; then
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"
fi

语法问题:
解析$USER(区分大小写)
if 语句中右括号后的分号
Then语句和if语句在同一行

最佳答案

您可以在日志导航器中看到脚本日志,您的脚本存在以下问题:

enter image description here

我相信默认比较是区分大小写的,要使其不区分大小写,您可以在比较之前将用户名更改为大写/小写:

if [ `echo $USER | tr [:lower:] [:upper:]` = "USERNAME" ]; then
echo "Got user check"
fi

如您所见,我将 $USER 移到了条件中以避免额外的 var 使用和脚本失败。

if-then block 中的分号是正常的,检查 man页。 then 如果您阅读起来更方便,单词可能会移到新行。

关于ios - Xcode Build Script (Build Phases->Run Script) Increment Build Version 基于用户名(用户),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12927255/

相关文章:

ios - 无法在 viewDidLoad 中更新 view.layer.frame?

ios - 初始化对象的多种方法?

ios - 在 tableViewController 上添加对象

xcode - 使用--all选项卸载Xcode会删除所有内容吗?

bash - tar 不归档所有文件,尽管日志另有说明

iphone - iOS - 将 NSDictionary 写入 Localized.strings

ios - project.pbxproj 始终在 git 中标记为已修改

iOS不同的bundle id映射到同一个应用程序

bash - 您如何根据目录名称命名Docker镜像?

bash - 使用/bin/bash -c <script> 时的空位置参数