用于编辑PROJECT-Info.plist文件的CFBundleVersion字段的Bash脚本

前端之家收集整理的这篇文章主要介绍了用于编辑PROJECT-Info.plist文件的CFBundleVersion字段的Bash脚本前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
为了建立一个持续的集成系统,哈德森,我写了一个bash脚本来自动构建 Xcode项目.
此外,在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”选项和“.*”表示任何字符)是错误的.

任何想法 ?

提前感谢,抱歉我的英文水平不好.

$myversion=1.0.3
$perl -O777 -i.bak -pe 's|<key>CFBundleVersion</key>\\s*<string>[\d.]*</string>|<key>CFBundleVersion</key></key>'"$myversion"'<string>|' bundle

文件包移动到bundle.bak,并将1.0.6.9替换为新捆绑文件中的1.0.3.

猜你在找的Bash相关文章