Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Bash:枚举所有连接的设备_Android_Bash_Awk - Fatal编程技术网

Android Bash:枚举所有连接的设备

Android Bash:枚举所有连接的设备,android,bash,awk,Android,Bash,Awk,我把几个安卓设备插到我的笔记本电脑上。我可以按顺序列出他们的序列号 adb设备 输出: List of devices attached 015d4a826e0ffb0f device 015d4a826e43fb16 device 015d41d830240b11 device 015d2578a7280b02 device 我想在每个设备上执行一些操作,比如 adb-s$device install foo.apk 但是我不知道如何让variabledevice迭

我把几个安卓设备插到我的笔记本电脑上。我可以按顺序列出他们的序列号

adb设备

输出:

List of devices attached 
015d4a826e0ffb0f    device
015d4a826e43fb16    device
015d41d830240b11    device
015d2578a7280b02    device
我想在每个设备上执行一些操作,比如

adb-s$device install foo.apk


但是我不知道如何让variable
device
迭代所有通过
adb设备获得的设备

bash
中实现的方法。读取命令的输出,并在第二列中使用
while循环对其进行迭代

while read sn device; do
    adb -s "$sn" install foo.apk
done < <(adb devices | sed '1d')
读取sn设备时;做
adb-s“$sn”安装foo.apk

完成<主要技巧是将设备序列与其他输出分开。您需要切断标题和第二列。类似这样的方法会奏效:

for DEVICE in `adb devices | grep -v "List" | awk '{print $1}'`
do 
  adb -s $DEVICE install foo.apk
done

您可以使用
xargs
awk

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

我将您的输入放入
文件
,并使用
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

这将尝试在设备上安装apk:“of,attached,device,device,device…”TC需要串行(第一列)和所有,但第一行(已连接的设备列表)我从未使用过
adb
,因此不确定这是否是OP为清晰起见添加的实际输出。我更新了答案,在输入
while循环之前删除了第一行。感谢您的反馈!:)OP还需要
$sn
,而不是
$device
,但其主要思想是正确的;-)@OlegSKleshchook再次感谢!