我想編寫一個腳本,可以從應用程序的Info.plist中讀取Bundle Identifier或版本號等信息。 Xcode似乎並沒有在它的環境變量中提供這些信息。有沒有其他方法讓他們進入sh/bash?如何從shell腳本中讀取plist信息(bundle id)
回答
的defaults
命令可以讀/寫任何plist文件,只是給它一個路徑減去.plist
擴展:
$ defaults read /Applications/Preview.app/Contents/Info CFBundleIdentifier
com.apple.Preview
這直接從應用程序包的Info.plist
文件拉CFBundleIdentifier
值。
默認也適用於二進制plists沒有任何額外的步驟。
您可以直接從構建的產品中讀取文件。但是,如果您在編輯器中查看info.plist文件本身,您將看到shell變量本身。例如。該包ID是具有以下shell命令:
com.yourcompany.${PRODUCT_NAME:rfc1034identifier}
可以調用在Xcode中運行的任何shell腳本${PRODUCT_NAME:rfc1034identifier}
,它應該填充。
雖然我沒有測試過,但這聽起來不錯。缺點是你不回收捆綁ID,但只是它的最後一部分,所以你將不得不在硬編碼「com.mycompanyname」部分... – Dimitris 2010-12-02 01:33:23
在Mac上安裝了一個名爲PlistBuddy的命令行程序,可以在plist中讀取/寫入值。在終端輸入'man PlistBuddy'以獲取更多信息。
我已經嘗試PlistBuddy並玩了很多。問題是PlistBuddy可以打印捆綁ID但不返回它(它只返回0或1)。所以作爲一個shell noob我有一些麻煩讓分配給一個變量。不過,我是如何設法使其發揮作用的。我現在會發布我的答案。 – Dimitris 2010-12-02 01:35:09
使用PlistBuddy,通過蘋果的應用程序,可以指定字符串VAR是這樣的:
#!/bin/sh
BUNDLE_ID=$(/usr/libexec/PlistBuddy -c "Print :CFBundleIdentifier" "${BUILD_ROOT}/${INFOPLIST_PATH}")
凡BUILD_ROOT和INFOPLIST_PATH的變量通過Xcode的設定,如果你運行一個「運行腳本」這個劇本建立階段。
PlistBuddy並不總是存在於系統中。如果您分發腳本,您可以考慮使用默認值,因爲其他答案指出。 – 2014-12-23 22:44:30
- 1. 從讀取PLIST信息TableView中
- 2. 從shell腳本中提取RTF文件中的信息
- 3. 如何從文本文件表中提取特定信息UNIX/Shell腳本
- 4. shell腳本:從文件中讀取
- 5. 從文件 - shell腳本中讀取值
- 6. shell腳本中的錯誤從logcat獲取Android的源信息
- 7. shell腳本:如何從變量中只讀取部分文本
- 8. 從shell腳本讀取變量的shell腳本
- 9. 如何使用shell腳本從命令提示符中提取信息?
- 10. 從信息的plist
- 11. 批處理腳本讀取信息
- 12. 從plist中讀取
- 13. 從plist中讀取
- 14. 從文本文檔中讀取信息
- 15. 通過shell腳本從pom.xml文件獲取根詳細信息
- 16. 從shell腳本逐行讀取文件
- 17. 從shell腳本讀取vm屬性XshowSettings
- 18. 從shell腳本讀取配置文件
- 19. 在shell腳本空讀取
- 20. 從shell腳本讀取python腳本中的空格參數
- 21. 如何從.xml文件讀取信息
- 22. 從plist回覆信息
- 23. 關於shell腳本和php的信息
- 24. 如何從shell腳本的後臺讀取文件描述符
- 25. 在shell腳本中讀取參數
- 26. 無法使用shell腳本獲取進程信息
- 27. 從其他站點讀取信息的腳本
- 28. 從文檔中讀取plist
- 29. 從.plist文件中讀取
- 30. 從kext讀取plist
這是更好的答案(尤其是PlistBuddy不再默認安裝);你應該選擇它。 – Olie 2014-09-22 17:34:03