Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何修改";。“字符串”;iOS项目中的unix shell命令(或命令工具)文件?_Ios_Bash_Shell - Fatal编程技术网

如何修改";。“字符串”;iOS项目中的unix shell命令(或命令工具)文件?

如何修改";。“字符串”;iOS项目中的unix shell命令(或命令工具)文件?,ios,bash,shell,Ios,Bash,Shell,我想在iOS项目中通过shell脚本动态修改“xxx.strings”文件 它们是键值文件。有没有办法用键值替换键值 1.“InfoPlist.字符串”文件内容如下: CFBundleDisplayName = "WinTraining"; CFBundleDisplayName = "eDetailing"; "Item" = "Item"; "ProductName" = "Product Name"; "Today" = "Today"; "NetworkError" = "Unabl

我想在iOS项目中通过shell脚本动态修改“xxx.strings”文件


它们是键值文件。有没有办法用键值替换键值

1.“InfoPlist.字符串”文件内容如下:

CFBundleDisplayName = "WinTraining";
CFBundleDisplayName = "eDetailing";
"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...";
有人想将“WinTraining”更改为“eDetailing”,如下所示:

CFBundleDisplayName = "WinTraining";
CFBundleDisplayName = "eDetailing";
"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...";
2.还有相同的多行文件名为“Localizable.strings”,如下所示:

CFBundleDisplayName = "WinTraining";
CFBundleDisplayName = "eDetailing";
"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”文件,Diffient jenkins的作业是为Diffient客户构建的)。在iOS项目中,“CbundleDisplayName”用于设置应用程序名称,不同的客户需要不同的应用程序名称,因此我需要更改“InfoPlist.string”文件。“Localizable.strings”,情况相同。

向Jenkins作业设置中添加如下脚本

mv $WORKSPACE/InfoPlist.strings $WORKSPACE/InfoPlist.strings.orig
sed -e 's/WinTraining/eDetailing/' $WORKSPACE/InfoPlist.strings.orig > $WORKSPACE/InfoPlist.strings

将如下脚本添加到Jenkins作业设置中

mv $WORKSPACE/InfoPlist.strings $WORKSPACE/InfoPlist.strings.orig
sed -e 's/WinTraining/eDetailing/' $WORKSPACE/InfoPlist.strings.orig > $WORKSPACE/InfoPlist.strings

如果您有权访问
sed
命令,可以尝试:

sed -i 's/\"WinTraining\"/\"eDetailing\"/' InfoPlist.strings
sed命令也应该适用于Localizable.strings。要替换其他内容,请使用:

sed-i的/STRING\u TO\u SEARCH\u FOR/STRING\u TO\u替换为/u SEARCH\u STRING\u


确保转义引号等。

如果您有权访问
sed
命令,您可以尝试:

sed -i 's/\"WinTraining\"/\"eDetailing\"/' InfoPlist.strings
sed命令也应该适用于Localizable.strings。要替换其他内容,请使用:

sed-i的/STRING\u TO\u SEARCH\u FOR/STRING\u TO\u替换为/u SEARCH\u STRING\u


一定要避开引用之类的话。

非常感谢Kazuki和MeetTitan,我从你的提示中找到了更好的方法。 我还使用
sed
命令将值替换为键,如下所示:

InfoPlist.String: Localizable.strings:
非常感谢Kazuki和MeetTitan,我在你的提示下找到了更好的方法。 我还使用
sed
命令将值替换为键,如下所示:

InfoPlist.String: Localizable.strings:
您能提供脚本的输入和输出示例吗?您到底想修改什么?为什么要这样做?如果你有一些字符串是动态的,为什么不动态地查找你的本地化字符串呢?@ShellFish,谢谢你的提醒。我已经编辑了我的问题。你能提供脚本的输入和输出示例吗?你到底想修改什么?为什么要这样做?如果你有一些字符串是动态的,为什么不动态地查找你的本地化字符串呢?@ShellFish,谢谢你的提醒。我已经编辑了我的问题。它们是键值文件。有没有办法用键替换值?它们是键值文件。有没有办法用键替换值?