我将几台Android设备插入笔记本电脑。我可以列出他们的SN
adb devices
输出:
List of devices attached
015d4a826e0ffb0f device
015d4a826e43fb16 device
015d41d830240b11 device
015d2578a7280b02 device
我想在每个设备上执行一些操作,比如
adb -s $device install foo.apk
但我不知道如何让变量device
迭代adb devices
获得的所有设备。
答案 0 :(得分:7)
在bash
中执行此操作的一种方法。阅读命令的输出,并使用while loop
在第二列上迭代它。
while read sn device; do
adb -s "$sn" install foo.apk
done < <(adb devices | sed '1d')
答案 1 :(得分:3)
主要技巧是将设备序列与其他输出分开。你需要切断标题和第二列。像这样的东西会起作用:
for DEVICE in `adb devices | grep -v "List" | awk '{print $1}'`
do
adb -s $DEVICE install foo.apk
done
答案 2 :(得分:3)
您可以使用xargs
和awk
:
adb devices | awk 'NR>1{print $1}' | xargs -n1 -I% adb -s % install foo.apk
<强>演示:强>
我将您的输入放入file
并使用echo
检查输出产生:
$ awk 'NR>1{print $1}' file | xargs -n1 -I% echo adb -s % install foo.apk
adb -s 015d4a826e0ffb0f install foo.apk
adb -s 015d4a826e43fb16 install foo.apk
adb -s 015d41d830240b11 install foo.apk
adb -s 015d2578a7280b02 install foo.apk