2012-07-09 163 views
2

我有此脚本做出自动增量上构造每个版本号:bash脚本返回Shell脚本调用错误

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

我插入它在构建阶段“复制包资源”之前。首先,在壳牌场我离开了缺省的/ bin/sh的,但它给了我一个Shell Script Invocation Error说:

Command /bin/sh failed with exit code 1 

所以我抬头做什么,我发现改变壳牌/bin/bash可以修复它。我这样做,我仍然有同样的错误。它仍然告诉我,Command /bin/sh failed with exit code 1。为什么它仍然告诉我,如果/ bin/sh不存在,我有一个错误?

回答

3

我知道这个问题已经过了一年半了,但是当搜索这个问题时,这个问题出现在搜索结果的顶部。我发现了一个我想分享的不同修正:

这里是我在使用plistbuddy脚本时收到的错误细节(我认为这与OP看到的错误一样)。

Set: Entry, ":CFBundleBuildVersionString", Does Not Exist 
File Doesn't Exist, Will Create: /Users/*YourFilePathHere/YourAppName*.app/Info.plist 
Set: Entry, ":CFBundleBuildDateVersionString", Does Not Exist 
Command /bin/sh failed with exit code 1 

Screenshot Command bin sh failed with exit code 1 error

我试图clean和删除Derived Data没有成功。原来的实际解决方案非常简单。我发现在build期间,脚本试图在plist实际由Xcode生成之前将生成的值添加到plist

Screenshot Target Build Phases

Targets > Build Phases > Extra Version Data是有这个脚本运行。 但是Targets > Build Phases > Copy Bundle Resources是生成plist的地方。

Screenshot Target Build Phases

单击并拖动Extra Version Data,使后Copy Bundle Resources因此,plist建造之前的脚本试图增加所产生的价值就变成上市。

Screenshot Target Build Phases Corrected

然后build和用啤酒快乐。

(使用的Xcode 5.1)

0

我刚刚遇到了这个问题,发现我的INFOPLIST_FILE的文件名中有一个空格,用于创建一个新的目标和附加后缀'copy'的XCode。似乎PlistBuddy无法像创建此脚本一样处理该空间。

一旦我将文件重命名为没有空格并更新了名称以匹配构建设置,此错误就消失了。

0

我只是碰到了类似的问题使用新型面料Cocoapod与我的Xcode项目后。

我不得不改变织物脚本: ${PODS_ROOT}/Fabric/Fabric.framework/run ... 到: "${PODS_ROOT}/Fabric/Fabric.framework/run" ... 因为我有领导到我的CocoaPods根位置的目录的一个名称空间:

~/Documents/My Directory Name/My_Xcode_Project_Directory/

0

同样的问题也发生在我身上。 删除衍生数据然后清理并构建正在解决该问题。