我想编写一个脚本,可以从应用程序的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. 从文件 - shell脚本中读取值
- 4. shell脚本中的错误从logcat获取Android的源信息
- 5. shell脚本:如何从变量中只读取部分文本
- 6. 如何使用shell脚本从命令提示符中提取信息?
- 7. 从信息的plist
- 8. 批处理脚本读取信息
- 9. 从plist中读取
- 10. 从shell脚本逐行读取文件
- 11. 从shell脚本读取配置文件
- 12. 在shell脚本空读取
- 13. 从plist回复信息
- 14. 如何从shell脚本的后台读取文件描述符
- 15. 从其他站点读取信息的脚本
- 16. 从文档中读取plist
- 17. 如何在Rails中读取POST信息?
- 18. 从perl脚本获取shell脚本
- 19. 如何读取plist数据
- 20. Shell脚本从文件读取变量并在perl脚本中使用
- 21. 如何从shell脚本
- 22. 如何从shell脚本
- 23. 使用shell脚本编辑plist文件
- 24. 从文件中读取配置信息
- 25. 如何从PList中读取捆绑版本?
- 26. 从shell脚本中的变量中逐行读取
- 27. Shell脚本和Intersystems缓存:提取信息?
- 28. 如何在Shell脚本中读取Env变量?
- 29. 如何在shell脚本中保存“读取”错误输出?
- 30. 如何读取shell脚本中的转义字符?
这是更好的答案(尤其是PlistBuddy不再默认安装);你应该选择它。 – Olie 2014-09-22 17:34:03