Xcode构建脚本(构建阶段 - >运行脚本)基于用户名(用户)增加构建版本

时间:2012-10-17 04:43:20

标签: ios xcode bash unix build

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

我在终端完成了“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语句中关闭括号后   
然后声明在同一行,如同声明

1 个答案:

答案 0 :(得分:4)

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

enter image description here

我认为默认比较区分大小写,为了使其不敏感,您可以在比较之前将用户名更改为大写/小写:

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

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

if-then块处的分号是正常的,请查看man页面。如果您更方便阅读,then字词可能会移到新行。