2016-03-31 9 views
0

XcodeプロジェクトのBuild PhasesにカスタムBash Run Scriptがあります。それはplistに正式なバージョン番号を書きます。XcodeビルドフェーズBash実行スクリプト内のスペースと特殊文字の処理

#proper escape for spaces 
TARGET_BUILD_DIR=${TARGET_BUILD_DIR//" "/"\ "} 

echo "Setting marketing version, CFBundleShortVersionString, to $VERSION in $TARGET_BUILD_DIR/$INFOPLIST_PATH..." 

/usr/libexec/PlistBuddy -c "Set CFBundleShortVersionString $VERSION" $TARGET_BUILD_DIR/$INFOPLIST_PATH 

echo "Setting technical version, CFBundleVersion, to $BUILD in $TARGET_BUILD_DIR/$INFOPLIST_PATH..." 

/usr/libexec/PlistBuddy -c "Set CFBundleVersion $BUILD" $TARGET_BUILD_DIR/$INFOPLIST_PATH 

パスにスペースや特殊文字が含まれていない場合は、問題ありません。ここで

は、このコードを呼び出そうとしたときに何が起こるかです:

は1.7.0.0 で/Users/jenkins/.jenkins/jobs/ClientName/jobs/iOS/jobsに、マーケティングのバージョン、CFBundleShortVersionStringを設定します/ What's Up/workspace/build/WhatsUp.app/Info.plist ...ファイルが存在しません。 作成:/Users/jenkins/.jenkins/jobs/ClientName/jobs/iOS/jobs/What 無効です引数

テクニカルバージョンCFBundleVersionを199に設定 /Users/jenkins/.jenkin s/jobs/ClientName/jobs/iOS/jobs /とは何ですか? 上に/ workspace/build/WhatsUp.app/Info.plist ...ファイルが存在しません。 作成:/Users/jenkins/.jenkins/jobs/ CLIENTNAME /ジョブ/ iOS版/仕事/何 無効な引数

エコーがうまくディレクトリをピックアップしますが、問題のディレクトリを使用しようとすると、エラーが返されますPlistBuddy

これまでのところ、私は「\」でスペースや特殊文字をエスケープするようなものの数を試してみました:

#replace spaces attempt 
TARGET_BUILD_DIR=${TARGET_BUILD_DIR//" "/"\ "} 
TARGET_BUILD_DIR=${TARGET_BUILD_DIR// /\ } 

#replace apostrophes attempt 
TARGET_BUILD_DIR=${TARGET_BUILD_DIR//"'"/"\'"} 
TARGET_BUILD_DIR=${TARGET_BUILD_DIR//'/\'} 

が、私はスペースや特殊文字を含むディレクトリを受け入れるようにPlistBuddyを取得するために行うには何がありますか?

+0

引用あなたの変数の展開:個別"$TARGET_BUILD_DIR""$INFOPLIST"を引用

はトリックをしました。 –

答えて

0

スペースと特殊文字を置き換える必要はありませんでした。

@Etan Reisnerさんが変数の展開を引用すると、私はそれに関連してさまざまなことを試みました。

Setting marketing version, CFBundleShortVersionString, to $VERSION in $TARGET_BUILD_DIR/$INFOPLIST_PATH..." 
/usr/libexec/PlistBuddy -c "Set CFBundleShortVersionString $VERSION" "$TARGET_BUILD_DIR"/"$INFOPLIST_PATH" 

Setting technical version, CFBundleVersion, to $BUILD in $TARGET_BUILD_DIR/$INFOPLIST_PATH..." 
/usr/libexec/PlistBuddy -c "Set CFBundleVersion $BUILD" "$TARGET_BUILD_DIR"/"$INFOPLIST_PATH" 
関連する問題