未经允许,请勿转载!!!
在指定的目录中以日期为目录记录,可以在运行的时候在后面添加对用的name,生成的文件目录会加上对用的name。
#!/bin/bash
#@ echo ***
####按格式获取时间信息
date_ymd=$(date +%Y%m%d)
date_hm=$(date +%Y%m%d_%H_%M)
#######设置需要获取的地址
mtklog_src_path="/storage/emulated/0/mtklog"
mtklog_dst_path="/home/putao/virtualbox/mtklog/$date_ymd/$date_hm"
mtktrace_src_path="/data/anr/"
mtktrace_dst_path=$mtklog_dst_path
#echo -e "$mtklog_src_path \n$mtklog_dst_path \n$mtktrace_src_path\n"
####初始化设备连接状态
is_device_connect="disconnect"
#### 设置设备的判断条件
deviceMatch="device"
IsDevice="ture"
####设置最大等待时间 一次循环1s
waitTimeout=20
####初始化等待时间 单位s
waitCount=0
##########数字比较方法
#if [ $waitCount -gt $waitTimeout ]
#then
# echo -e "+++\n\n"
#else
# echo -e "---\n\n"
#fi
########判断设备是否链接函数
function is_device_plugin()
{
echo "is device plugin!"
# [[ "$IsDevice" != "" ]]
####一直循环判断 直到匹配道设备或者超时退出
while ((1))
do
deviceInfo=$(adb devices)
####判断是否有设备插入
IsDevice=$(echo $deviceInfo | grep -w "$deviceMatch")
# echo -e "\n$deviceInfo $deviceMatch $IsDevice \n"
if [[ "$IsDevice" != "" ]]
then
echo "ok"
####当有设备插入时设置标记量 并返回 shell函数只能返回数字
is_device_connect="connect"
return 1
else
####匹配失败 休眠1s
sleep 1s
####对计数时间进行累加1
let waitCount++
####打印匹配失败信息 给出提示
echo "device connect fail $waitCount $waitTimeout"
####如果超时直接退出循环
if [ $waitCount -gt $waitTimeout ]
then
break
fi
fi
done
#####匹配失败退出循环后 打印信息 并设置标记量 同时返回
echo "wait timeout " $waitCount "s"
is_device_connect="disconnect"
return 0
}
#######判断设备是否链接函数 结束
#####
#####
#####调用函数判断设备是否链接(函数会自行循环查询waitTimeout S )
is_device_plugin
#####获取函数返回值
isDeviceResult=$?
@echo -e "\n$isDeviceResult $is_device_connect\n"
####使用函数返回值判断 执行adb root 命令 失败直接结束脚本
if [[ $isDeviceResult = 1 ]]
then
echo "++++adb root"
adb root
else
echo -e "no devices connect!\n"
exit
fi
#####调用函数判断设备是否连接
is_device_plugin
@echo -e "\n$isDeviceResult $is_device_connect\n"
####使用链接状态标记量判断 执行adb remount 命令
if [[ $is_device_connect == connect ]]
then
echo "++++adb remount"
adb remount
else
echo -e "devices connect timeout!\n"
exit
fi
##### 提取对应目录的log
adb pull $mtktrace_src_path $mtktrace_dst_path
adb pull $mtklog_src_path $mtklog_dst_path
##### 脚本结束
注:这里的等待是否有adb设备插入采用的是轮询的方式,超时及返回,时间可以设置。
也可以调用adb wait-for-device 操作,相当于阻塞函数,只有有设备插入才会返回进行下面的步骤。