【发布时间】:2014-01-01 17:29:38
【问题描述】:
我正在尝试使用脚本编辑 plist,该脚本确定运行脚本的本地文件夹。我遇到的是一个空白的 plist。 Objective-C 环绕也是一种选择,但我没有从中得到预期的 plist 编辑。
当单独运行时,它按预期工作,最后没有第二个 sed 管道命令,并通过在 shell 中运行脚本传递它,然后添加它。
当从 shell 单独运行时,整个 cat MyPlist.plist 等行按预期工作。
输出:无,它只是运行
这是我的脚本:
#!/bin/sh
# scriptname is the full path of the script location.
scriptpath=`echo $scriptname | sed 's/MyScript.sh/\//g'`
cd $scriptpath
cd ..
cat MyPlist.plist | sed 's/<\/dict>/<key>My\ Plist\ Setting<\/key><string>1<\/string><\/dict>/g' > MyPlist.plist;
【问题讨论】:
-
也许您可以将您的 shell 脚本缩减为一个更小的示例,该示例仍然可以演示该问题。 - 输入、输出和预期输出也会有所帮助。
-
感谢@Martin R,已完成,希望对您有所帮助。
-
执行最后一行时,您确定当前工作目录正确(即包含“MyPlist.plist”的目录)?也许添加一个
pwd调用来检查。 -
@Marin R,是的,因为脚本在没有 NSTask 的情况下完美运行,并且 plist 文件被编辑,但它只返回一个空 plist。
-
我不知道为什么会这样。 - 但我会使用 /usr/libexec/PlistBuddy 而不是 sed 来操作属性列表。参见“man PlistBuddy”。
标签: objective-c macos bash plist