एक निरंतर एकीकरण प्रणाली स्थापित करने के लिए, हडसन, मैंने स्वचालित रूप से एक्सकोड प्रोजेक्ट बनाने के लिए एक बैश स्क्रिप्ट लिखी। इसके अलावा, डीबग कॉन्फ़िगरेशन में, यह मुझसे पूछा गया था कि PROJECT-Info.plist फ़ाइल के CFBundleRevision फ़ील्ड में $ {BUNDLE_VERSION} .r $ {SVN_REVISION} के रूप में प्रोजेक्ट की svn संशोधन संख्या डालने के लिए।PROJECT-Info.plist फ़ाइल के CFBundleVersion फ़ील्ड को संपादित करने के लिए बैश स्क्रिप्ट
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" स्ट्रिंग बदल दिया जाना चाहिए:
<?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 स्क्रिप्ट की कोशिश की:
आप नीचे दिए गए परियोजना-Info.plist फ़ाइल के स्रोत कोड मिल जाएगा $ {BUNDLE_VERSION} .r $ {SVN_REVISION} के साथ (केवल वर्तमान में मानक आउटपुट में)। हालांकि, प्रतिस्थापन 'एन' विकल्प के बिना काम करता है जिसमें एक बार में एक पंक्ति के लिए और एक पंक्ति के लिए शामिल है। लेकिन PROJECT-Info.plist फ़ाइल में "<string>[...]</string>
" स्ट्रिंग के साथ कई पंक्तियां हैं ...
मुझे लगता है कि यह दो पंक्तियों ('एन' विकल्प और "। *" के बीच अज्ञात वर्णों को संसाधित करने का मेरा तरीका है कोई पात्र) गलत है।
कोई विचार?
अग्रिम धन्यवाद और अंग्रेजी में मेरे खराब स्तर के लिए खेद है।
आप इस तरह के एक अजगर या पर्ल मॉड्यूल जो एक XML फ़ाइल में कुंजी और मूल्यों से छेड़छाड़ के उद्देश्य के लिए बनाया गया है के रूप में एक उचित एक्सएमएल उपकरण का उपयोग करने की जरूरत है। एक्सएमएलस्टारलेट जैसे शैल यूटिलिटीज भी उपलब्ध हैं। [Regexes चुनौती तक नहीं हैं] (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454)। वैसे, आपकी अंग्रेजी बहुत करीब है। –
[xmlstarlet] (http://xmlstar.sourceforge.net/) खोल उपयोगिता समाधान के लिए धन्यवाद। मैंने इसे डाउनलोड और इंस्टॉल किया। मैं कल इसका परीक्षण करूंगा और मैं आपको अपना फीडबैक दूंगा। –