2016-03-31 8 views
0

Ich habe eine benutzerdefinierte Bash Run Script in meinem Xcode-Projekt Build Phases. Es schreibt die offiziellen Versionsnummern auf den Plist.Umgang mit Leerzeichen und Sonderzeichen in einem Xcode Build Phase Bash Run Skript

#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 

Dies funktioniert einwandfrei, wenn der Pfad keine Leerzeichen oder Sonderzeichen enthält.

Hier ist, was passiert, wenn man versucht, diesen Code zu nennen:

Einstellung Marketing-Version, CFBundleShortVersionString, zu 1.7.0.0 in /Users/jenkins/.jenkins/jobs/ClientName/jobs/iOS/jobs/Was ist Up/Arbeitsbereich/Build/WhatsUp.app/Info.plist ... Datei existiert nicht, wird Erstellen: /Users/jenkins/.jenkins/jobs/ClientName/jobs/iOS/jobs/What Ungültig Argumente

Einstellung der technischen Version, CFBundleVersion, bis 199 in /Users/jenkins/.jenkin s/jobs/ClientName/jobs/iOS/jobs/Was ist Up/workspace/build/WhatsUp.app/Info.plist ... Datei existiert nicht, wird erstellen: /Users/jenkins/.jenkins/jobs/ Client/Jobs/iOS/Jobs/Was ungültige Argumente

Das Echo nimmt das Verzeichnis ganz gut, aber PlistBuddy ein Fehler zurück, wenn das betreffende Verzeichnis zu verwenden versuchen.

Bisher habe ich eine Reihe von Dingen versucht, wie Leer- und Sonderzeichen mit Flucht ‚\‘:

#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//'/\'} 

Was muss ich tun PlistBuddy bekommen Sie ein Verzeichnis mit einem Leerzeichen oder Sonderzeichen zu akzeptieren ?

+0

Zitat Ihre variable Erweiterungen. –

Antwort

0

Es stellt sich heraus, dass das Ersetzen von Leerzeichen und Sonderzeichen nicht erforderlich war.

@Etans Reisners Kommentar über das Zitieren variabler Erweiterungen ließ mich alle möglichen anderen Dinge versuchen, die damit zu tun haben.

"$TARGET_BUILD_DIR" und "$INFOPLIST" Zitiert einzeln hat den Trick:

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" 
Verwandte Themen