Работает для меня! Спасибо! Agvtool следует использовать в папке Project.

внедрить систему непрерывной интеграции, Хадсон, я написал скрипт bash для автоматической сборки проекта Xcode. Более того, в конфигурации отладки меня попросили вставить номер редакции svn проекта в поле CFBundleRevision файла PROJECT-Info.plist как $ {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

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

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

Любая идея ?

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

Ответы на вопрос(3)

Ваш ответ на вопрос