7

プロジェクトをコンパイルするとき、システムのユーザー名が一致すると、このスクリプトは Xcode プロジェクトのビルド バージョンを 1 つインクリメントする必要があります。これらは、[ターゲット] -> [ビルド フェーズ] -> [Xcode でスクリプトを実行] 内のスクリプト (Applescript、Python、または Perl ではない) 内の単なる Unix コマンドであることに注意してください。

ターミナルで「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 ステートメントの閉じ括弧の直後にあるセミコロン If
ステートメントと同じ行の Then ステートメント

4

1 に答える 1

4

ログナビゲーターでスクリプトログを確認できます。スクリプトには次の問題があります。

ここに画像の説明を入力

デフォルトの比較では大文字と小文字が区別されると思います。区別しないようにするには、比較する前にユーザー名を大文字/小文字に変更できます。

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

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

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

于 2012-10-17T07:45:22.177 に答える