如何在iOS项目中通过unix shell命令(或命令工具)修改“.st​​rings”文件?

时间:2014-12-17 03:04:07

标签: ios bash shell

我想通过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)中修改“.st​​rings”文件,diffrient jenkins的作业是为不同的客户构建的。在iOS项目中“CFBundleDisplayName”用于设置应用程序名称,不同的客户需要不同的应用程序名称,因此我需要更改“InfoPlist.string”文件。 “Localizable.strings”,同样的情况。

3 个答案:

答案 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命令将值替换为键,如下所示:

InfoPlist.strings:

 key=CFBundleDisplayName
 newvalue=\"eDetailing\"
 sed -i -e "s/${key} *\=.*\;/${key} = ${newvalue}\;/" InfoPlist.strings

Localizable.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