我想通过iOS项目中的shell脚本动态修改“xxx.strings”文件。
它们是键值文件。有什么方法可以用键替换值吗?
1.“InfoPlist。字符串”文件内容如下:
CFBundleDisplayName = "WinTraining";
有人想将“WinTraining”更改为“eDetailing”,如下所示:
CFBundleDisplayName = "eDetailing";
2.并且有相同的多行文件名为“Localizable。 strings ”,如下所示:
"Item" = "Item";
"ProductName" = "Product Name";
"Today" = "Today";
"NetworkError" = "Unable to connect to the network, please check the network";
"UploadComplete" = "Upload complete";
"Updating" = "Updating,Please wait...";
我想在我的CI环境(jenkins)中修改“.strings”文件,diffrient jenkins的作业是为不同的客户构建的。在iOS项目中“CFBundleDisplayName”用于设置应用程序名称,不同的客户需要不同的应用程序名称,因此我需要更改“InfoPlist.string”文件。 “Localizable.strings”,同样的情况。
答案 0 :(得分:2)
如果您有权访问sed
命令,可以尝试:
sed -i 's/\"WinTraining\"/\"eDetailing\"/' InfoPlist.strings
sed命令也应该适用于Localizable.strings。要替换其他东西,请使用:
sed -i 's/STRING_TO_SEARCH_FOR/STRING_TO_REPLACE_SEARCH_STRING_WITH/'
一定要逃避引号等。
答案 1 :(得分:2)
非常感谢Kazuki和MeetTitan,我通过你的提示找到了更好的方法。
我还使用sed
命令将值替换为键,如下所示:
key=CFBundleDisplayName
newvalue=\"eDetailing\"
sed -i -e "s/${key} *\=.*\;/${key} = ${newvalue}\;/" InfoPlist.strings
key=\"Item\"
newvalue=\"The\ Item\"
sed -i -e "s/${key} *\=.*\;/${key} = ${newvalue}\;/" Localizable.strings
答案 2 :(得分:0)
将以下脚本添加到Jenkins作业设置
mv $WORKSPACE/InfoPlist.strings $WORKSPACE/InfoPlist.strings.orig
sed -e 's/WinTraining/eDetailing/' $WORKSPACE/InfoPlist.strings.orig > $WORKSPACE/InfoPlist.strings