在平時工作的過程中,很多重複性內容可以通過執行指令碼檔案來代替。一次編寫,就能帶來很大的效率提升。
今天跟大家分享一個簡單的 Shell 指令碼,只有區區 20 行左右的程式碼。
因為有時候我們測試某個應用程式需要先保證測試環境的乾淨,所以會手動解除安裝所有不必要的 App。而這個指令碼的功能就是在知道包名的前提下,通過迴圈執行 adb uninstall 命令一次性解除安裝完指定的應用程式。
指令碼的編寫思路是這樣的:
1、先將需要解除安裝的應用的包名(Package_Name)寫入到一個 all_list 檔案中;
2、通過 adb shell pm list packages -3 命令取出測試機中已安裝的所有第三方應用的包名並將其輸出到 list 檔案;
3、通過 for line in list 語句遍歷 list 檔案,取出每行字串並擷取出包名;
4、將擷取出的包名和 all_list 檔案中的內容進行對比,如果有相同或者包含的關係,則通過 adb uninstall 命令進行解除安裝;
5、被解除安裝的應用包名將輸出在終端。
以下為編寫好的指令碼:
#!/bin/bash
# 第三方應用包名輸出到list檔案
adb shell pm list packages -3 > list.txt
# 等待3秒
sleep 3s
# 遍歷手機裡的第三方app的包名
for line in $(cat list.txt); do
# 將packagename擷取出來
name=${line:8}
# 遍歷要解除安裝的包名
for line2 in $(cat all_list.txt); do
# 判斷是否包含
if [[ $name =~ $line2 ]]; then
# 刪除包名結尾的\r
package_name=$(echo $name | tr '\r' ' ')
# 執行adb解除安裝命令
adb uninstall $package_name
# 列印已解除安裝的包名
echo $package_name"已解除安裝"
fi
done
done
執行示例:
-> sh +x uninstall.sh
Success
com.tencent.qqpimsecure已解除安裝
歡迎關注微信公眾號“測試開發Stack”,更多原創文章第一時間釋出!