使用场景
当手机重启的时候希望在能连接adb的那刻立刻连上adb,进行log的抓取
shell脚本
#!/bin/bash
echo -----------------------------------------------------------------
while true; do
if [ $(adb devices -l | awk 'NR>2{print p}{p=$0}' | wc -l) -eq 1 ];then
echo "only one device has connected"
adb devices -l | awk 'NR>2{print p}{p=$0}' | while read id num
do
echo $id "-" $num
done
break
else
continue
fi
sleep 1
done
echo
adb root;adb remount
echo -----------------------------------------------------------------
adb shell
自己百度写了个shell脚本,大概逻辑就是当前如果有已连接设备,则输入adb shell,否则以1s为间隔进行轮询。
#!/bin/bash
echo -----------------------------------------------------------------
while true; do
if [ $(adb devices -l | awk 'NR>2{print p}{p=$0}' | wc -l) -eq 1 ];then
列出所有设备,由于第一行是提示,最后一行是空白,所以通过awk只显示除第一行和最后一行的输出。
当当前只有一个设备时,说明可以进行adb shel的尝试。
awk 'NR>2{print p}{p=$0}'这句逻辑通过百度是意思NR>2及当当前行大于2时,即第三行开始满足条件,打印前一行的信息,这逻辑就是为了过滤第一行和最后一行。
echo "only one device has connected"
adb devices -l | awk 'NR>2{print p}{p=$0}' | while read id num
do
echo $id "-" $num
done
break
无用逻辑,只是打印出当前连接的设备信息,可省略
else
continue
fi
sleep 1
done
echo
adb root;adb remount
echo -----------------------------------------------------------------
adb shell
总结
感觉方法有点蠢蠢的,不值得是否还有其它方法。。。
目前想到的方法就是轮询+adb shell