2012-11-13 45 views
1

這是我想要的XML文件進行編輯如何創建Android的shell腳本中的XML編輯字符串

<?xml version='1.0' encoding='utf-8' standalone='yes' ?> 
<map> 
<boolean name="public_checkins" value="false" /> 
<string name="checkins">[{&quot;storeName&quot;:&quot;Rundle Street&quot;,&quot;prize&quot;:&quot;price_fwh&quot;,&quot;checkinTime&quot;:1352717951195,&quot;prizeClaimed&quot;:false,&quot;storeId&quot;:57,&quot;expired&quot;:false},{&quot;storeName&quot;:&quot; Street&quot;,&quot;prize&quot;:&quot;price_fmf&quot;,&quot;checkinTime&quot;:1352717723886,&quot;prizeClaimed&quot;:false,&quot;storeId&quot;:57,&quot;expired&quot;:false}]</string> 
*<string name="uuid">30212345-0c1e-dcb-974e-5effa7f016be</string>* 
</map> 

我試圖創建一個shell腳本編輯字符串UUID和替換每次我運行腳本時,都會隨機生成一個數字序列。

下面是我想出的腳本。

#!/system/bin/sh 

set number=$RANDOM 

echo "<?xml version='1.0' encoding='utf-8' standalone='yes' ?> 
<map> 
<boolean name="public_checkins" value="false" /> 
<string name="checkins">[{&quot;storeName&quot;:&quot; Street&quot;,&quot;prize&quot;:&quot;price_fwh&quot;,&quot;checkinTime&quot;:1352717951195,&quot;prizeClaimed&quot;:false,&quot;storeId&quot;:57,&quot;expired&quot;:false},{&quot;storeName&quot;:&quot;Rundle Street&quot;,&quot;prize&quot;:&quot;price_fmf&quot;,&quot;checkinTime&quot;:1352717723886,&quot;prizeClaimed&quot;:false,&quot;storeId&quot;:57,&quot;expired&quot;:false}]</string> 
<string name="uuid">302$number-0c1e-dcb-974e-5effa7f016be</string> 
</map> 
" > /data/data/com.app/shared_prefs/app.xml 
+0

字符串資源只讀您無法對其進行編輯的Perl會更合適。您正在將字符串文件應用於app.xml。是嗎?如果是這樣,那麼你想完成什麼。相反,您可以使用StringFormat方法爲字符串資源中定義的格式生成字符串。 – Dharmendra

+0

我想將隨機數回顯到app.xml中存在的字符串中。 – Lam

回答

0
<?xml version='1.0' encoding='utf-8' standalone='yes' ?> 
<map> 
<string name="uuid">302%1$s-0c1e-dcb-974e-5effa7f016be</string> 
</map> 

現在你可以使用這個格式來得到這樣的字符串下面

String uuid = String.format(getResources().getString(R.string.uuid), YourUUIDNumber); 

您將收到完整的字符串

302xxxxxx-0c1e-dcb-974e-5effa7f016be 

其中的xxxxxxx是您擁有的價值觀傳入String的格式方法。

+0

這隻會檢索字符串值,但不會寫入字符串值。 – Lam

0

file=/data/data/com.app/shared_prefs/app.xml 
mv $file $file.bak 
{ 
arr=({0..9} {a..f}) 
while IFS=\> read -d\< tag str; do 
    if [[ $tag = *'name="uuid"'* ]]; then 
    randomstr= 
    for ((i=0;i<32;i++)); do 
    if ((i%4==0 && i/4>=2 && i/4<6)); then 
    randomstr=$randomstr- 
    fi 
    randomstr=$randomstr${arr[RANDOM%16]} 
    done 
    printf "%s" "$tag${str:+>}$randomstr<" 
    else 
    printf "%s" "$tag${str:+>}$str<" 
    fi 
done 
printf "%s\n" "$tag>" 
} <$file.bak >$file 
# rm $file.bak # 
+0

但是,這不創建一個單獨的XML文件? – Lam

+0

是的,如果你需要修改$ file'mv $ file $ file.bak'和'cmd <$file.bak > $ file';答案已編輯 –