You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PlistBuddy向plist字符串字段追加内容时命令报错,如何解决?

解决PlistBuddy追加plist字符串的问题

你遇到的报错是因为bash把$(STH)当成了命令替换——它会尝试执行名为STH的命令,而这个命令显然不存在,所以才会提示"command not found"。要实现给plist字段追加字符串的需求,正确的思路是先读取原字段的值,拼接新内容后再写回去,具体步骤如下:

1. 读取原字段的值

首先用PlistBuddy的Print命令获取目标字段的当前值,保存到一个shell变量中:

original_value=$(/usr/libexec/PlistBuddy -c "Print someentryinplist" your_plist_file.plist)

这里把your_plist_file.plist换成你实际的plist文件路径,someentryinplist换成目标字段的路径(比如如果是嵌套字段,可能是CFBundleDisplayName或者Root/SomeSubKey)。

2. 拼接新内容并写回plist

接着把原变量和要追加的字符串拼接,再用Set命令写回去:

/usr/libexec/PlistBuddy -c "Set someentryinplist ${original_value}-sometext" your_plist_file.plist

完整示例

假设你的plist文件是Info.plist,要修改的字段是CFBundleName,完整命令如下:

# 读取原值
original_name=$(/usr/libexec/PlistBuddy -c "Print CFBundleName" Info.plist)
# 追加内容并写入
/usr/libexec/PlistBuddy -c "Set CFBundleName ${original_name}-sometext" Info.plist

额外注意事项

  • 如果目标字段可能不存在,你可以先判断一下,用Add命令替代Set(如果字段不存在的话),比如:
    if ! /usr/libexec/PlistBuddy -c "Print someentryinplist" your_plist_file.plist >/dev/null 2>&1; then
        /usr/libexec/PlistBuddy -c "Add someentryinplist string sometext" your_plist_file.plist
    else
        original_value=$(/usr/libexec/PlistBuddy -c "Print someentryinplist" your_plist_file.plist)
        /usr/libexec/PlistBuddy -c "Set someentryinplist ${original_value}-sometext" your_plist_file.plist
    fi
    
  • 如果原字段的值包含空格或特殊字符,记得给变量加上引号:
    /usr/libexec/PlistBuddy -c "Set someentryinplist \"${original_value}-sometext\"" your_plist_file.plist
    

内容的提问来源于stack exchange,提问作者kol23

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:35:54