@@ -6,7 +6,7 @@ MODDIR_NAME="${MODDIR##*/}"
tools_path = " $MODDIR /tools "
Compression_rate = 3
script = " ${ 0 ##*/ } "
backup_version = "V15.9.1 "
backup_version = "V15.9.2 "
[ [ $SHELL = *mt* ] ] && echo "請勿使用MT管理器拓展包環境執行,請更換系統環境" && exit 2
update_backup_settings_conf( ) {
echo "#音量鍵選擇總開關 是否在每次執行備份腳本時使用音量鍵詢問備份需求
@@ -54,6 +54,9 @@ Backup_obb_data="${Backup_obb_data:-1}"
#1開啟 0關閉
backup_media=" ${ backup_media :- 0 } "
#存在前後台的應用忽略備份(1備份0忽略)
Background_apps_ignore=" ${ Background_apps_ignore :- 0 } "
#假設你遇到列表輸出異常問題請將此設為1
debug_list=" ${ debug_list :- 0 } "
@@ -148,6 +151,9 @@ Shell_LANG="$Shell_LANG"
#自動更新腳本(留空強制音量鍵選擇)
update=" ${ update :- 1 } "
#存在前後台的應用忽略恢復(1恢復0忽略)
Background_apps_ignore=" ${ Background_apps_ignore :- 0 } "
#使用者(如0 999等用戶, 留空如存在多個用戶強制音量鍵選擇, 無多用戶則默認0不詢問)
user=
@@ -468,7 +474,7 @@ else
RAMINFO = "RAM:null"
fi
echoRgb "---------------------SpeedBackup---------------------"
echoRgb " 腳本路徑: $MODDIR \n -已開機: $( Show_boottime) \n -執行時間: $( date +"%Y-%m-%d %H:%M:%S" ) \n -busybox路徑: $( which busybox) \n -busybox版本: $( busybox | head -1 | awk '{print $2}' ) \n -appinfo版本: $( appinfo --version) \n -腳本版本: $backup_version \n -管理器: $Manager_version \n -品牌: $( getprop ro.product.brand 2>/dev/null) \n -型號: $Device_name ( $( getprop ro.product.device 2>/dev/null) )\n -閃存顆粒: $UFS_MODEL ( $ROM_TYPE )\n - $DEVICE_NAME \n - $RAMINFO \n -Android版本: $( getprop ro.build.version.release 2>/dev/null) SDK: $( getprop ro.build.version.sdk 2>/dev/null) \n -內核: $( uname -r) \n -Selinux狀態: $( [ [ $( getenforce) = Permissive ] ] && echo "寬容" || echo "嚴格" ) \n -By@YAWAsau\n -Support: https://jq.qq.com/?_wv=1027&k=f5clPNC3 "
echoRgb " 腳本路徑: $MODDIR \n -已開機: $( Show_boottime) \n -執行時間: $( date +"%Y-%m-%d %H:%M:%S" ) \n -busybox路徑: $( which busybox) \n -busybox版本: $( busybox | head -1 | awk '{print $2}' ) \n -appinfo版本: $( appinfo --version) \n -腳本版本: $backup_version \n -管理器: $Manager_version \n -品牌: $( getprop ro.product.brand 2>/dev/null) \n -型號: $Device_name ( $( getprop ro.product.device 2>/dev/null) )\n -閃存顆粒: $UFS_MODEL ( $ROM_TYPE )\n - $DEVICE_NAME \n - $RAMINFO \n -Android版本: $( getprop ro.build.version.release 2>/dev/null) SDK: $( getprop ro.build.version.sdk 2>/dev/null) \n -內核: $( uname -r) \n -Selinux狀態: $( [ [ $( getenforce) = Permissive ] ] && echo "寬容" || echo "嚴格" ) \n -By@YAWAsau\n -Support: https://jq.qq.com/?_wv=1027&k=f5clPNC3\n - $( down -s -L https://v1.hitokoto.cn/?encode= text) "
case $MODDIR in
*Backup_*)
if [ [ -f $MODDIR /app_details.json ] ] ; then
@@ -572,7 +578,7 @@ Rename_script () {
if [ [ $Script_target_language != $shell_language ] ] ; then
[ [ $HT = 0 && $K = "" ] ] && echoRgb " 腳本語言為 $shell_language ....轉換為 $Script_target_language中 ,請稍後等待轉換.... "
ts -f " $REPLY " -o " $REPLY "
echo_log " $REPLY 翻譯" "SpeedBackup"
echo_log " $( echo " $REPLY " | sed " s|^ $path_hierarchy /|| " ) 翻譯" "SpeedBackup"
mv " $REPLY " " $MODDIR_NAME / $( ts " $FILE_NAME " ) "
fi
fi
@@ -582,7 +588,7 @@ Rename_script () {
if [ [ $Script_target_language != $shell_language ] ] ; then
[ [ $HT = 0 && $K = "" ] ] && echoRgb " 腳本語言為 $shell_language ....轉換為 $Script_target_language中 ,請稍後等待轉換.... "
ts -f " $REPLY " -o " $REPLY "
echo_log " $REPLY 翻譯" "SpeedBackup"
echo_log " $( echo " $REPLY " | sed " s|^ $path_hierarchy /|| " ) 翻譯" "SpeedBackup"
mv " $REPLY " " $MODDIR_NAME / $( ts " $FILE_NAME " ) "
let HT++
fi ; ;
@@ -637,6 +643,7 @@ if [ -f \"$MODDIR_Path/tools/tools.sh\" ]; then
MODDIR=\"\${0%/*}\"
operate=\" $1 \"
conf_path=\" $conf_path \"
[ ! -f \" $conf_path \" ] && . \"\${0%/*}/tools/tools.sh\"
case \$(grep -o 'background_execution=.*' \"\$conf_path\" | awk -F '=' '{print \$2}') in
0)
notification=false
@@ -783,7 +790,7 @@ if [[ $path_hierarchy != "" && $Script_target_language != "" ]]; then
ts -f " $REPLY " -o " $REPLY "
if [ [ $? = 0 ] ] ; then
touch " $TMPDIR /0 "
echo_log " $REPLY 翻譯" "SpeedBackup"
echo_log " $( echo " $REPLY " | sed " s|^ $path_hierarchy /|| " ) 翻譯" "SpeedBackup"
MODDIR = " ${ 0 %/* } "
if [ [ $REPLY != *Backup_* ] ] ; then
update_backup_settings_conf>" ${ REPLY %/*/* } /backup_settings.conf "
@@ -962,6 +969,7 @@ kill_app() {
[ [ $Pause_Freeze = "" ] ] && Pause_Freeze = "0"
if [ [ $Pause_Freeze = 0 ] ] ; then
if [ [ $( dumpsys activity processes | grep "packageList" | cut -d '{' -f2 | cut -d '}' -f1 | egrep -w " ^ $name2 $" | sed -n '1p' ) = $name2 ] ] ; then
pkill -9 -f " $name2 $| $name2 [:/_] "
killall -9 " $name2 " & >/dev/null
am force-stop --user " $user " " $name2 " & >/dev/null
am kill " $name2 " & >/dev/null
@@ -997,7 +1005,7 @@ Backup_apk() {
result = 0
echoRgb "Apk版本無更新 跳過備份" "2"
else
if [ [ $nobackup ! = tru e ] ] ; then
if [ [ $nobackup = fals e ] ] ; then
if [ [ $apk_version != "" ] ] ; then
let osn++
update_apk = " $( echo " $name1 \" $name2 \" " ) "
@@ -1468,6 +1476,7 @@ get_name(){
name2 = " $( grep -v "#" " $txt3 " 2>/dev/null | sed -e '/^$/d' | sed -n " ${ i } p " | awk '{print $2}' ) "
Backup_folder = " $MODDIR / $name1 "
[ [ -d $Backup_folder ] ] && rm -rf " $Backup_folder "
echo " $( sed -e " s/ $name1 $name2 //g ; /^ $/d " " $txt " 2>/dev/null) " >" $txt "
let i++
done
rm -rf " $txt3 "
@@ -1544,6 +1553,31 @@ restore_permissions () {
[ [ $true_permissions != "" ] ] && Set_true_Permissions " $name2 " " $( echo " $true_permissions " | xargs) " & >/dev/null
[ [ $false_permissions != "" ] ] && Set_false_Permissions " $name2 " " $( echo " $false_permissions " | xargs) " & >/dev/null
}
Background_application_list( ) {
if [ [ $Background_apps_ignore = false ] ] ; then
unset Backstage apk_path3
#獲取後台
if [ [ $( dumpsys activity activities | awk -F 'packageName=' '/packageName=/{split($2, a, " "); print a[1]}' | sort | uniq) != "" ] ] ; then
apk_path3 = " $( echo " $( pm path --user " $user " " $( dumpsys activity activities | awk -F 'packageName=' '/packageName=/{split($2, a, " "); print a[1]}' | sort | uniq | head -1) " 2>/dev/null | cut -f2 -d ':' ) " | head -1) "
if [ [ -d ${ apk_path3 %/* } ] ] ; then
Backstage = " $( dumpsys activity activities | awk -F 'packageName=' '/packageName=/{split($2, a, " "); print a[1]}' | sort | uniq) "
else
if [ [ $( am stack list | awk '/taskId/&&!/unknown/{split($2, a, "/"); print a[1]}' ) != "" ] ] ; then
apk_path3 = " $( echo " $( pm path --user " $user " " $( am stack list | awk '/taskId/&&!/unknown/{split($2, a, "/"); print a[1]}' | head -1) " 2>/dev/null | cut -f2 -d ':' ) " | head -1) "
[ [ -d ${ apk_path3 %/* } ] ] && Backstage = " $( am stack list | awk '/taskId/&&!/unknown/{split($2, a, "/"); print a[1]}' ) "
fi
fi
else
if [ [ $( am stack list | awk '/taskId/&&!/unknown/{split($2, a, "/"); print a[1]}' ) != "" ] ] ; then
apk_path3 = " $( echo " $( pm path --user " $user " " $( am stack list | awk '/taskId/&&!/unknown/{split($2, a, "/"); print a[1]}' | head -1) " 2>/dev/null | cut -f2 -d ':' ) " | head -1) "
[ [ -d ${ apk_path3 %/* } ] ] && Backstage = " $( am stack list | awk '/taskId/&&!/unknown/{split($2, a, "/"); print a[1]}' ) "
fi
fi
[ [ ! -d ${ apk_path3 %/* } ] ] && {
echoRgb "獲取當前後台應用失敗" "0" && unset Backstage
}
fi
}
case $operate in
backup)
kill_Serve
@@ -1589,6 +1623,10 @@ backup)
echoRgb "全部應用備份結束後是否備份自定義目錄\n -音量上備份,音量下不備份" "2"
get_version "備份" "不備份" && backup_media = " $branch "
}
[ [ $Background_apps_ignore != "" ] ] && isBoolean " $Background_apps_ignore " "Background_apps_ignore" && Background_apps_ignore = " $nsx " || {
echoRgb "存在前台或是後台的應用忽略備份\n -音量上備份,音量下忽略" "2"
get_version "備份" "忽略" && Background_apps_ignore = " $branch "
}
else
[ [ $Backup_Mode = "" ] ] && {
echoRgb "選擇備份模式\n -音量上備份應用+數據,音量下僅應用不包含數據" "2"
@@ -1614,6 +1652,10 @@ backup)
echoRgb "全部應用備份結束後是否備份自定義目錄\n -音量上備份,音量下不備份" "2"
get_version "備份" "不備份" && backup_media = " $branch "
} || isBoolean " $backup_media " "backup_media" && backup_media = " $nsx "
[ [ $Background_apps_ignore = "" ] ] && {
echoRgb "存在前台或是後台的應用忽略備份\n -音量上備份,音量下忽略" "2"
get_version "備份" "忽略" && Background_apps_ignore = " $branch "
}
fi
i = 1
#數據目錄
@@ -1641,29 +1683,23 @@ backup)
backup_path
echoRgb " 配置詳細:\n -壓縮方式: $Compression_method \n -音量鍵確認: $Lo \n -更新: $update \n -備份模式: $Backup_Mode \n -備份外部數據: $Backup_obb_data \n -備份user數據: $Backup_user_data \n -自定義目錄備份: $backup_media \n "
D = "1"
C = " $( sed -e '/^$/d' " $txt " 2>/dev/null | sed -n '$=' ) "
[ [ $user = 0 ] ] && Apk_info = " $( appinfo -sort-i -o pn -pn $system -3 2>/dev/null | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u) " || Apk_info = " $( appinfo -sort-i -o pn -pn $system $( pm list packages -3 --user " $user " | cut -f2 -d ':' ) 2>/dev/null | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u) "
Apk_info = " $( echo " $system \n $( pm list packages -3 --user " $user " | cut -f2 -d ':' ) " | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u ) "
[ [ $Apk_info = "" ] ] && echoRgb "appinfo輸出失敗" "0" && exit 2
[ [ $backup_mode = "" ] ] && {
echoRgb "檢查備份列表中是否存在已經卸載應用" "3"
while [ [ $D -le $C ] ] ; do
name1 = " $( sed -e '/^$/d' " $txt " 2>/dev/null | sed -n " ${ D } p " | awk '{print $1}' ) "
name2 = " $( sed -e '/^$/d' " $txt " 2>/dev/null | sed -n " ${ D } p " | awk '{print $2}' ) "
if [ [ $name1 != "" && $name2 != "" ] ] ; then
if [ [ $( echo " $Apk_info " | egrep -w " ^ $name2 $" ) != "" ] ] ; then
[ [ $Tmplist = "" ] ] && Tmplist = '#不需要備份的應用請在開頭使用#注釋 比如:#酷安 com.coolapk.market( 忽略安裝包和數據) \n#不需要備份數據的應用請在開頭使用!注釋 比如:!酷安 com.coolapk.market( 僅忽略數據) '
Tmplist = " $Tmplist \n $name1 $name2 "
else
case $name1 in
*不需要*) ; ;
*)
echo " $( sed -e " s/ $name1 $name2 //g ; /^ $/d " " $txt " 2>/dev/null) " >" $txt "
echoRgb " $name1 $name2不存在系統 ,從列表中刪除 " "0" ; ;
esac
while read -r ; do
if [ [ $( echo " $REPLY " | sed 's/^[ \t]*//' ) != \# * ] ] ; then
app = ( $REPLY $REPLY )
if [ [ ${ app [1] } != "" && ${ app [2] } != "" ] ] ; then
if [ [ $( echo " $Apk_info " | egrep -w " ^ ${ app [1] } $" ) != "" ] ] ; then
[ [ $Tmplist = "" ] ] && Tmplist = '#不需要備份的應用請在開頭使用#注釋 比如:#酷安 com.coolapk.market( 忽略安裝包和數據) \n#不需要備份數據的應用請在開頭使用!注釋 比如:!酷安 com.coolapk.market( 僅忽略數據) '
Tmplist = " $Tmplist \n $REPLY "
else
echoRgb " $REPLY不存在系統 ,從列表中刪除 " "0"
fi
fi
let D++
fi
done
done < " $txt "
}
[ [ $Tmplist != "" ] ] && echo " $Tmplist " | sed -e '/^$/d' | sort>" $txt "
r = " $( grep -v "#" " $txt " 2>/dev/null | sed -e '/^$/d' | sed -n '$=' ) "
@@ -1735,6 +1771,9 @@ backup)
notification --tag= "101" --title= "App備份" --text= " 備份 $name1 \" $name2 \" "
echoRgb " 備份 $name1 \" $name2 \" " "2"
unset Backup_folder ChineseName PackageName nobackup No_backupdata result apk_version apk_version2 zsize zmediapath Size data_path Ssaid ssaid Permissions
nobackup = "false"
Background_application_list
[ [ $Backstage != "" && $( echo " $Backstage " | egrep -w " ^ $name2 $" ) != "" ] ] && echoRgb " $name1存在後台 忽略備份 " "0" && nobackup = "true"
if [ [ $Backup_Mode = true ] ] ; then
if [ [ $name1 = !* || $name1 = ! * ] ] ; then
name1 = " $( echo " $name1 " | sed 's/!//g ; s/! //g' ) "
@@ -1753,14 +1792,12 @@ backup)
fi
Backup_folder = " $Backup / $name1 "
app_details = " $Backup_folder /app_details.json "
app_Permissions = " $Backup_folder /Permissions "
if [ [ -f $app_details ] ] ; then
PackageName = " $( jq -r '.[] | select(.PackageName != null).PackageName' " $app_details " ) "
if [ [ $PackageName != $name2 ] ] ; then
unset Backup_folder ChineseName PackageName nobackup No_backupdata result apk_version apk_version2 zsize zmediapath Size data_path Ssaid ssaid Permissions
Backup_folder = " $Backup / ${ name1 } [ ${ name2 } ] "
app_details = " $Backup_folder /app_details.json "
app_Permissions = " $Backup_folder /Permissions "
fi
fi
[ [ $hx = USB && $PT = "" ] ] && echoRgb "隨身碟意外斷開 請檢查穩定性" "0" && exit 1
@@ -1944,37 +1981,39 @@ Restore|Restore2)
if [ [ -d $Backup_folder2 ] ] ; then
echoRgb "是否恢復多媒體數據\n -音量上恢復,音量下不恢復" "2"
notification --tag= "105" --title= "App恢復" --text= "是否恢復多媒體數據,音量上恢復,音量下不恢復"
get_version "恢復媒體數據" "跳過恢復媒體數據"
media_recovery = " $branch "
get_version "恢復媒體數據" "跳過恢復媒體數據" && media_recovery = " $branch "
A = 1
B = " $( find " $Backup_folder2 " -maxdepth 1 -name "*.tar*" -type f 2>/dev/null | wc -l) "
fi
if [ [ -d $Backup_folder3 && $( find " $Backup_folder3 " -maxdepth 1 -name "*.zip*" -type f 2>/dev/null | wc -l) != 0 ] ] ; then
echoRgb "是否刷入Magisk模塊\n -音量上刷入,音量下不刷入" "2"
notification --tag= "105" --title= "App恢復" --text= "是否刷入Magisk模塊, 音量上刷入, 音量下不刷入"
get_version "刷入模塊" "跳過刷入模塊"
modules_recovery = " $branch "
get_version "刷入模塊" "跳過刷入模塊" && modules_recovery = " $branch "
fi
[ [ $Background_apps_ignore != "" ] ] && isBoolean " $Background_apps_ignore " "Background_apps_ignore" && Background_apps_ignore = " $nsx " || {
echoRgb "存在前台或是後台的應用忽略恢復\n -音量上恢復,音量下忽略" "2"
get_version "恢復" "忽略" && Background_apps_ignore = " $branch "
}
[ [ $recovery_mode2 = false ] ] && exit 2
if [ [ $recovery_mode = true ] ] ; then
echoRgb "獲取未安裝應用中"
TXT = " $MODDIR /TEMP.txt "
[ [ $user = 0 ] ] && Apk_info = " $( appinfo -sort-i -o pn -3 2>/dev/null | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u) " || Apk_info = " $( appinfo -sort-i -o pn $( pm list packages -3 --user " $user " | cut -f2 -d ':' ) 2>/dev/null | egrep -v 'ice.message|com.topjohnwu.magisk' | sort -u) "
[ [ $Apk_info = "" ] ] && echoRgb "appinfo輸出失敗" "0" && exit 2
while [ [ $i -le $r ] ] ; do
name1 = " $( grep -v "#" " $txt " 2>/dev/null | sed -e '/^$/d' | sed -n " ${ i } p " | awk '{print $1}' ) "
name2 = " $( grep -v "#" " $txt " 2>/dev/null | sed -e '/^$/d' | sed -n " ${ i } p " | awk '{print $2}' ) "
if [ [ $( echo " $Apk_info " | egrep -w " ^ $name2 $" ) = "" ] ] ; then
echo " $name1 $name2 " >>" $TXT "
fi
let i++
done
i = 1
sort -u " $TXT " -o " $TXT " 2>/dev/null
r = " $( grep -v "#" " $TXT " 2>/dev/null | sed -e '/^$/d' | sed -n '$=' ) "
while read -r ; do
if [ [ $( echo " $REPLY " | sed 's /^[ \t]*//' ) != \# * ] ] ; then
app = ( $REPLY $REPLY )
[ [ ${ app [1] } != "" && ${ app [2] } ! = "" ] ] && {
[ [ $( echo " $Apk_info " | egrep -w " ^ ${ app [1] } $" ) = "" ] ] && Tmplist = " $Tmplist \n $REPLY "
}
fi
done < " $txt "
r = " $( echo " $Tmplist " | sed -e '/^$/d' | sed -n '$=' ) "
if [ [ $r != "" ] ] ; then
echoRgb " 獲取完成 預計安裝 $r個應用 "
txt = " $TXT "
txt = " $Tmplist "
echoRgb " 未安裝應用列表\n $txt \n確認無誤使用音量上繼續恢復, 音量下退出腳本 " "1"
get_version "恢復安裝" "退出腳本"
[ [ $branch = false ] ] && exit
else
echoRgb "獲取完成 但備份內應用都已安裝....正在退出腳本" "0" && exit 0
fi
@@ -1985,13 +2024,11 @@ Restore|Restore2)
r = 1
Backup_folder = " $MODDIR "
app_details = " $Backup_folder /app_details.json "
app_Permissions = " $Backup_folder /Permissions "
if [ [ ! -f $app_details ] ] ; then
echoRgb " $app_details遺失 ,無法獲取包名 " "0" && exit 1
else
ChineseName = " $( jq -r 'to_entries[] | select(.key != null).key' " $app_details " | head -n 1) "
PackageName = " $( jq -r '.[] | select(.PackageName != null).PackageName' " $app_details " ) "
[ [ -f $app_Permissions ] ] && . " $app_Permissions " & >/dev/null
fi
name1 = " $ChineseName "
[ [ $name1 = "" ] ] && name1 = " ${ Backup_folder ##*/ } "
@@ -1999,6 +2036,10 @@ Restore|Restore2)
name2 = " $PackageName "
[ [ $name2 = "" ] ] && echoRgb "包名獲取失敗" "0" && exit 2
DX = "單獨恢復"
[ [ $Background_apps_ignore != "" ] ] && isBoolean " $Background_apps_ignore " "Background_apps_ignore" && Background_apps_ignore = " $nsx " || {
echoRgb "存在前台或是後台的應用忽略恢復\n -音量上恢復,音量下忽略" "2"
get_version "恢復" "忽略" && Background_apps_ignore = " $branch "
}
fi
#開始循環$txt內的資料進行恢復
#記錄開始時間
@@ -2029,12 +2070,14 @@ Restore|Restore2)
echoRgb " $Backup_folder /app_details.json不存在 " "0"
exit 2
fi
app_Permissions = " $Backup_folder /Permissions "
[ [ -f $app_Permissions ] ] && . " $app_Permissions " & >/dev/null
[ [ $name2 = "" ] ] && echoRgb "應用包名獲取失敗" "0" && exit 1
fi
if [ [ -d $Backup_folder ] ] ; then
echoRgb " 恢復 $name1 ( $name2 ) " "2"
Background_application_list
restore = "true"
[ [ $Backstage != "" && $( echo " $Backstage " | egrep -w " ^ $name2 $" ) != "" ] ] && echoRgb " $name1存在後台 忽略恢復 " "0" && restore = "false"
[ [ $restore = true ] ] && {
starttime2 = " $( date -u "+%s" ) "
if [ [ $( pm path --user " $user " " $name2 " 2>/dev/null) = "" ] ] ; then
installapk
@@ -2076,6 +2119,7 @@ Restore|Restore2)
rgb_a = 188
echoRgb " _________________ $( endtime 1 "已經" ) ___________________ "
rgb_a = " $rgb_d "
}
else
echoRgb " $Backup_folder資料夾遺失 ,無法恢復 " "0"
fi
@@ -2123,7 +2167,6 @@ Restore|Restore2)
let i++ en++ nskg++
done
restore_freeze
rm -rf " $TMPDIR /scriptTMP " " $TXT "
Set_screen_pause_seconds off
starttime1 = " $TIME "
[ [ $background_execution = 2 ] ] && app_process /system/bin io.github.qqlittleice233.magic.Notification -send --importance= 3 --tag= "105" --title= "恢復" --text= " 恢復完成 $( endtime 1 " $DX開始到結束 " ) "
@@ -2296,24 +2339,19 @@ Getlist)
let rgb_a++ LR++
done
if [ [ -f $nametxt ] ] ; then
D = "1"
C = " $( sed -e '/^$/d' " $nametxt " | sed -n '$=' ) "
while [ [ $D -le $C ] ] ; do
name1 = " $( sed -e '/^$/d' " $nametxt " | sed -n " ${ D } p " | awk '{print $1}' ) "
name2 = " $( sed -e '/^$/d' " $nametxt " | sed -n " ${ D } p " | awk '{print $2}' ) "
if [ [ $name1 ! = "" && $name2 != "" ] ] ; then
if [ [ $( echo " $Apk_info2 " | egrep -w " ^ $name2 $" ) != "" ] ] ; then
[ [ $Tmplist = "" ] ] && Tmplist = '#不需要備份的應用請在開頭使用#注釋 比如:#酷安 com.coolapk.market( 忽略安裝包和數據) \n#不需要備份數據的應用請在開頭使用!注釋 比如:!酷安 com.coolapk.market( 僅忽略數據) '
Tmplist = " $Tmplist \n $name1 $name2 "
else
case $name1 in
*不需要*) ; ;
*) echoRgb " $name1 $name2不存在系統 ,從列表中刪除 " "0" ; ;
esac
while read -r ; do
if [ [ $( echo " $REPLY " | sed 's/^[ \t]*//' ) != \# * ] ] ; then
app = ( $REPLY $REPLY )
if [ [ ${ app [1] } != "" && ${ app [2] } != "" ] ] ; then
if [ [ $( echo " $Apk_info2 " | egrep -w " ^ ${ app [1] } $" ) != "" ] ] ; then
[ [ $Tmplist = "" ] ] && Tmplist = '#不需要備份的應用請在開頭使用#注釋 比如:#酷安 com.coolapk.market( 忽略安裝包和數據) \n#不需要備份數據的應用請在開頭使用!注釋 比如:!酷安 com.coolapk.market( 僅忽略數據) '
Tmplist = " $Tmplist \n $REPLY "
else
echoRgb " $REPLY不存在系統 ,從列表中刪除 " "0 "
fi
fi
let D++
fi
done
fi
done < " $nametxt "
[ [ $Tmplist != "" ] ] && echo " $Tmplist " | sed -e '/^$/d' | sort>" $nametxt "
fi
wait