代码之家  ›  专栏  ›  技术社区  ›  Hamid

需要使用字符串/变量进行修补

  •  1
  • Hamid  · 技术社区  · 14 年前

    我正在写一个脚本来自动化在计算机实验室安装一堆Mac的过程。

    这是一个bash脚本

    谁能给我提供一个简单的解决方案,可以脚本执行任务?谢谢。

    3 回复  |  直到 14 年前
        1
  •  1
  •   msw    14 年前
    sed -i "s/plist-macnum-placeholder/$macnum/g' file ...
    

    在哪里? -i 意思是“就地”编辑文件 /g 说每行做多次替换,如果只有一次就可以放弃。

        2
  •  2
  •   strager    14 年前

    {{MACHINE_ID}} )在plist和use中 sed 要替换它:

    sed -i -e 's/{{MACHINE_ID}}/'"$macnum"/g filename
    
        3
  •  0
  •   Gordon Davisson    14 年前

    如果 您正在更改的plist是XML格式的,但是如果它是Apple的二进制格式,则可能会损坏文件格式。可以先使用plutil将其转换为XML:

    plutil -convert xml1 filename
    sed -i -e "s/placeholder/$macnum/g" filename
    

    之后不必将其转换回二进制格式,因为苹果的plist框架可以互换地读取这两种格式。另一种方法是使用PlistBuddy来编辑plist的内容(尽管它需要脚本知道要将哪些条目设置为哪些值,而不仅仅是替换占位符):

    /usr/libexec/PlistBuddy -c "set :oneentry 'value including $macnum where appropriate'" filename
    /usr/libexec/PlistBuddy -c "set :anotherentry 'value including $macnum where appropriate'" filename
    

    最后,您可以对默认值执行相同的操作,尽管它要求您按完整路径指定.plist文件,并保留.plist的名称:

    defaults write oneentry "value including $macnum where appropriate" /path/to/filename-without-plist
    defaults write anotherentry "value including $macnum where appropriate" /path/to/filename-without-plist