2012-10-17 14 views
7

システムのユーザ名が一致すると、このスクリプトはプロジェクトをコンパイルするときにXcodeプロジェクトのビルドバージョンを1つインクリメントする必要があります。これらは、XcodeのTarget-> Build Phases-> Run Script内のスクリプト(AppleScript、Python、またはPerlではなく)のUnixコマンドに過ぎません。Xcodeビルドスクリプト(ビルドフェーズ→実行スクリプト)ユーザ名(ユーザ)に基づいてビルドバージョンをインクリメント

端末で「echo $ USER」を実行しました。これは、ログインしているユーザーのユーザー名を表示します。これは、2番目のコードブロックの条件文に置いたのと同じ文字列です。

最初のコードブロックが機能します。条件文を追加する2番目の文は、条件文を追加しません。

#!/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文など

答えて

4

ログにスクリプトログが表示されますナビゲーターは、あなたのスクリプトで、私は次の問題を持っている:

enter image description here

私はデフォルトの比較はあなたが比較の前に、大文字/小文字にユーザー名を変更することができ、それは敏感ではないにするために、大文字と小文字が区別されますと信じて:

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

ご覧のとおり、追加のvar使用とスクリプトの失敗を避けるため、$ USERを条件に移動しました。

そして、if-thenブロックのセミコロンは通常のものです。manページを確認してください。 then単語が新しい行に移動される可能性があります。

+0

恐ろしい!これは完全に動作します!ありがとうございます。 – Glimpse

関連する問題