Bash:枚举所有连接的设备

时间:2013-06-11 15:13:50

标签: android bash awk

我将几台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获得的所有设备。

3 个答案:

答案 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)

您可以使用xargsawk

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