如何从adb devices命令输出中仅筛选状态为device的设备IP地址
适配需求的修改方案
你原脚本的问题是仅提取了所有行的第一列内容,没有对第二列的设备状态做过滤,所以会命中所有状态的设备。可以通过awk直接筛选状态为device的行,修改后的完整脚本如下:
#!/bin/bash # 仅提取状态为device的设备地址 device_list=$(adb devices | awk '$2 == "device" {print $1}') echo "正常可连接设备列表:" echo "$device_list" for x in $device_list do echo "尝试连接设备:$x" adb connect "$x" done
修改说明
- 替换原有的cut切分逻辑为awk条件筛选:
awk '$2 == "device" {print $1}'会逐行校验adb devices的输出,仅当行的第二列值严格等于device时,才输出该行第一列的IP+端口信息 - 自动跳过表头:表头行
List of devices attached的第二列值为of,不匹配筛选条件,不需要额外编写if判断跳过List关键词 - 完全保留原脚本的输出、连接逻辑,仅调整设备列表提取规则,适配你的过滤需求
内容的提问来源于stack exchange,提问作者Sasha Milic
相关产品推荐
相关产品推荐

