【原帖置頂】shell檔案中讀取plist檔案並實現shell中的數值計算
mac操作plist檔案用plistbuddy
,路徑在/usr/libexec/plistbuddy
。
先準備乙個簡單的plist檔案,當前bundleversion
的值為1。
測試用的plist
這個plist檔案對應的xml**:
<?xml version="1.0" encoding="utf-8"?>
udid
bf76c991995e61c5c783f3441bff4a18605bc7ba
bundleid
com.foobar2000.mobile
ipapath
/users/ypf/desktop
cfbundleshortversionstring
1.0cfbundleversion
1nsallowsarbitraryloads
// print:讀取值並列印的命令
// /usr/libexec/plistbuddy -c:指定plistbuddy的路徑
// -c:後接要執行的命令(不負責任地猜測是傳遞cmd引數的意思^_^)
// cfbundleversion:要讀取value的key
// /users/ypf/desktop/test.plist:plist檔案的路徑
/usr/libexec/plistbuddy -c "print cfbundleversion" /users/ypf/desktop/test.plist
執行效果
這個值後面還要用,所以需要定義乙個變數儲存起來~~
bundleversion=$(/usr/libexec/plistbuddy -c "print cfbundleversion" /users/ypf/desktop/test.plist)
echo $bundleversion
終端下直接寫+
-
*
/
(加減乘除)會被當做字串,寫計算表示式要用到expr
。
// 注意!expr之後有個空格
bundleversion=`expr $bundleversion + 1`
用echo $bundleversion
輸出結果,可以看到bundleversion
的新值為2.
計算bundleversion的新值
plistbuddy
向plist檔案寫入命令為set
// 指定plist路徑、目標鍵值對的key
/usr/libexec/plistbuddy -c "set cfbundleversion $bundleversion" /users/ypf/desktop/test.plist
執行上述命令後,bundleversion
的新值為2。
執行結果
shell檔案中讀取plist檔案並實現shell中的數值計算
#!/bin/bash
#author jileniao.net
schemename='jileniao'
date=`date +%y%m%d_%h%m`
sourcepath=$( cd "$( dirname $0 )" && pwd)
ipapath=$sourcepath
disname=$schemename"_"$date
archname=$disname.xcarchive
ipaname=$disname
exportoptions='exportoptions.plist'
infoplist=$schemename/info.plist
bundle_id='net.jileniao.iosblog'
display_name='極樂鳥'
version_name='1.0.5'
#build_code='153'
provision_profile='jileniao-dis'
if [ -n "$1" ]; then
# extra parameter 1
firm -rf ./build
rm main.jsbundle
rm main.jsbundle.meta
rm -rf ./build
rm -rf ./modulecache
rm -rf ./logs
xcodebuild clean
curr=`pwd`
cd .. && react-native bundle --entry-file index.js --platform ios --dev false --bundle-output ios/main.jsbundle --assets-dest ios/
cd $curr
# 先讀取之前的build_code,加1得到新的build_code
build_code=$(/usr/libexec/plistbuddy -c "print cfbundleversion" $infoplist)
build_code=`expr $build_code + 1`
# 設定編譯引數
/usr/libexec/plistbuddy -c "set cfbundledisplayname $display_name" $infoplist
/usr/libexec/plistbuddy -c "set cfbundleshortversionstring $version_name" $infoplist
/usr/libexec/plistbuddy -c "set cfbundleversion $build_code" $infoplist
/usr/libexec/plistbuddy -c "set cfbundleidentifier $bundle_id" $infoplist
/usr/libexec/plistbuddy -c "delete provisioningprofiles" $exportoptions
/usr/libexec/plistbuddy -c "add provisioningprofiles dict" $exportoptions
/usr/libexec/plistbuddy -c "add provisioningprofiles:$bundle_id string $provision_profile" $exportoptions
# 構建
xcodebuild archive \
-project jileniao.xcodeproj \
-scheme $schemename \
-configuration release \
-archivepath $archname \
clean \
build \
-deriveddatapath ./
if [ -e $archname ]; then
echo "xcodebuild archive successful"
else
echo "xcodebuild archive failed"
exit 1
fi# 匯出ipa
xcodebuild -exportarchive \
-archivepath $archname \
-exportpath $ipaname \
-exportoptionsplist $exportoptions
if [ -e $ipaname ]; then
echo "export ipa successful"
open $ipapath
else
echo "export ipa failed"
exit 1
fi#刪除臨時檔案
rm -rf $archname
rm -rf ./build
rm -rf ./modulecache
rm -rf ./logs
plist檔案的讀寫
在做ios開發時,經常用到到plist檔案,那plist檔案是什麼呢?它全名是 property list,屬性列表檔案,它是一種用來儲存序列化後的物件的檔案。屬性列表檔案的擴充套件名為 plist 因此通常被稱為 plist檔案。檔案是xml格式的。plist檔案通常用於儲存使用者設定,也可以用於...
讀寫 plist檔案的例子
想在乙個類裡把個陣列寫進.plist檔案裡,再在另乙個類裡從這個.plist檔案把陣列讀取出來?以name,phonenumber,age三個字段,為例。我是做的iphone,在文字框中輸入資料,獲取後,裝入陣列中。然後把陣列寫入.plist檔案 寫操作nsstring name txt1 text...
ios開發入門 plist 檔案讀寫
在xcode中建立乙個專案 會在supportion files 目錄下 看見乙個已plist字尾型別的檔案,這個檔案 是以 key value 存放的鍵 值對的值。它全名是 property list,屬性列表檔案,它是一種用來儲存序列化後的物件的檔案。屬性列表檔案的擴充套件名為.plist 因此...