4

我将几个安卓设备插入我的笔记本电脑。我可以列出他们的 SN

adb devices

输出:

List of devices attached 
015d4a826e0ffb0f    device
015d4a826e43fb16    device
015d41d830240b11    device
015d2578a7280b02    device

我想在每台设备上执行一些操作,比如

adb -s $device install foo.apk

但我不知道如何让变量device迭代所有由adb devices.

4

3 回答 3

7

一种方法来做到这一点bash。阅读命令的输出并使用while loop.

while read sn device; do
    adb -s "$sn" install foo.apk
done < <(adb devices | sed '1d')
于 2013-06-11T15:17:42.967 回答
3

主要技巧是将设备序列与其他输出分开。您需要切断标题和第二列。像这样的东西会起作用:

for DEVICE in `adb devices | grep -v "List" | awk '{print $1}'`
do 
  adb -s $DEVICE install foo.apk
done
于 2013-06-11T15:24:06.843 回答
3

你可以使用xargsand awk

adb devices | awk 'NR>1{print $1}' | xargs -n1 -I% adb -s % install foo.apk

演示:

我将您的输入放入 afile并使用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
于 2013-06-11T15:38:43.310 回答