Сценарий Bash для редактирования поля CFBundleVersion файла PROJECT-Info.plist

Чтобы установить систему непрерывной интеграции, Hudson, я написал сценарий bash для автоматической сборки проекта Xcode. Кроме того, в конфигурации отладки меня попросили вставить номер ревизии svn проекта в поле CFBundleRevision файла PROJECT-Info.plist как $ {BUNDLE_VERSION} .r $ {SVN_REVISION}.

You ' Я найду исходный код файла 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

Этот сценарий должен заменить строку «1.0» на $ {BUNDLE_VERSION} .r $ {SVN_REVISION} (только в стандартный вывод в настоящее время). Однако замена работает без опции «N», которая включает следующую строку в процессе sed и по одной строке за раз. Но в файле PROJECT-Info.plist много строк со строкой « [...] » ...

Я думаю, что это мой способ обработки неизвестного символы между двумя строками (опция «N» и «. *» для любых символов) неверны.

Есть идеи?

Заранее спасибо и извините за мой плохой уровень английского.

9
задан Doc_1faux 14 March 2011 в 14:11
поделиться