为了建立一个持续的集成系统,哈德森,我写了一个bash脚本来自动构建
Xcode项目.
此外,在Debug配置中,被要求我将PROJECT-Info.plist文件的CFBundleRevision字段中的项目的svn修订版本插入${BUNDLE_VERSION} .r ${SVN_REVISION}.
此外,在Debug配置中,被要求我将PROJECT-Info.plist文件的CFBundleRevision字段中的项目的svn修订版本插入${BUNDLE_VERSION} .r ${SVN_REVISION}.
你可以在下面找到PROJECT-Info.plist文件的源代码:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> [...] <key>CFBundleVersion</key> <string>1.0</string> [...] </dict> </plist>
我尝试过以下bash脚本:
sed 'N;s_^.*<key>CFBundleVersion</key>.*<string>[0-9][0-9]*\.[0-9][0-9]*</string>$_<key>CFBundleVersion</key>\ <string>'"$BUNDLE_VERSION"'\.r'"$SVN_REVISION"'</string>_' $PROJECT-Info.plist
该脚本应该用${BUNDLE_VERSION} .r ${SVN_REVISION}替换“1.0”字符串(仅在当前的标准输出中).
但是,替换工作没有“N”选项,其中包括sed进程中的下一行和一次一行.但是有很多行与“< string> […]< / string>” PROJECT-Info.plist文件中的字符串…
我认为这是我处理两行之间的未知字符的方式(“N”选项和“.*”表示任何字符)是错误的.
任何想法 ?
提前感谢,抱歉我的英文水平不好.