通过查找密钥从配置文件更新Info.plist字符串

时间:2019-07-19 14:42:49

标签: bash shell

我需要通过查找键来从配置文件更新plist字符串。如果键在info.plist和配置文件之间匹配,则将info.plist中的字符串替换为配置文件中的值。

qa.xcconfig:

username=newUserName
password=newPassword

info.plist

<key>username</key>
<string>oldUserName</string>
<key>password</key>
<string>oldPassword</string>

代码尝试:

 awk  -F= 'FNR==NR{QADIC[$1]=$2;next} {for (i in QADIC){
$(rlwrap /usr/libexec/PlistBuddy -c "Set :i 'QADIC[i]'" Info.plist)
}
}' qa.xcconfig 
  • 从我的develop.xcconfig创建了一个字典
  • 对于字典中的每个键,如果plist中的键匹配,则替换字符串。

预期输出:

<key>username</key>
<string>newUserName</string>
<key>password</key>
<string>newPassword</string>

如果一起工作,我似乎无能为力。

1 个答案:

答案 0 :(得分:0)

我为我的问题找到了解决方案,如下所示:

QA_KEY_ITEMS=($(awk -F'=' '{print $1}' < qat.xcconfig))
QA_VALUE_ITEMS=($(awk -F'=' '{print $2}' < qat.xcconfig))
for ((i=0;i<${#QA_KEY_ITEMS[@]};i++))
do
    key=${QA_KEY_ITEMS[$i]};
    value=${QA_VALUE_ITEMS[$i]};
    rlwrap /usr/libexec/PlistBuddy -c "Set :$key '$value'" Info.plist;
done