【发布时间】:2012-01-12 18:16:45
【问题描述】:
类似于"How to find Bundle Identifier from known PID?" 和"How to read plist information (bundle id) from a shell script,但不同.. 因为它们都与 Xcode 构建变量扩展等有关。
我的问题是,在 BASH shell 中,他们只知道进程的 PID,如何获得该进程的 PATH 或唯一的“Bundle ID”。
我确信有一个可怕的正则表达式来解析 ps,但我希望有一些更干净、更便携的东西。前面提到的帖子中的 cmets 包括
BUNDLE_ID=$(/usr/libexec/PlistBuddy -c "Print :CFBundleIdentifier" "${BUILD_ROOT}/${INFOPLIST_PATH}")
但是,我不认为每台 Mac 上都安装了plistbuddy,更重要的是,我的问题是在理论脚本中,而不是在 Xcode 构建阶段中。..
我尝试过plutil、plistkit 和plistdump,但似乎没有一个能奏效..
我试图实现这一点的原因是能够执行 defaults read / write 函数,而无需对父进程的 BundleID 进行硬编码。我知道如何将此信息作为参数传递给脚本..但我希望能够怀疑脚本中的检查..。
【问题讨论】:
-
当他们被回答时我接受他们。此外,我已经回答了 70 个问题,而提出了 16 个问题。其中大多数已经接受了答案。当我可以添加到解决方案时我会发布.. 当它解决问题时我会接受答案,而不仅仅是因为有人发布了它。
标签: macos bash shell plist nsuserdefaults