当前位置: 首页 > 知识库问答 >
问题:

运行ADB命令的Bash脚本不会遍历设备列表

李跃
2023-03-14

我有一个简单的bash脚本,它在设备列表中迭代,并对Android设备运行adb shell命令。代码如下:

echo "Displaying devices to be configured:"
adb devices | sed "1d ; $ d"
echo ""
echo "###########################"
echo "#                         #"
echo "# Starting configuration! #"
echo "#                         #" 
echo "###########################"
echo ""

while read -r udid device usb product model device2; do

echo ""
echo $usb
echo ""

# INSTALL THE APPS
adb -s "$usb" install ./src/apps/1.apk
adb -s "$usb" install ./src/apps/quicksupport.apk

# SET WIFI OFF
adb -s "$usb" shell settings put global wifi_on 0

# SET SOUND TO 0
adb -s "$usb" shell service call audio 7 i32 3 i32 0 i32 1

# SET AUTO TIME ZONE OFF
adb -s "$usb" shell settings put global auto_time_zone 0

# SET INSTALL NON MARKET APPS ON
adb -s "$usb" shell settings put global install_non_market_apps 1

# REBOOT
adb -s "$usb" reboot

done < <(adb devices -l | sed "1d; $ d")

echo ""
echo "###########################"
echo "#                         #"
echo "# Configuration complete! #"
echo "#                         #" 
echo "###########################"
echo ""

运行时,代码将在一个设备上成功运行所有配置。插入两个设备时,输出读数如下:

Displaying devices to be configured:
0123456789ABCDEF    device
0123456789ABCDEF    device

###########################
#                         #
# Starting configuration! #
#                         #
###########################


usb:336592896X

[100%] /data/local/tmp/1.apk
    pkg: /data/local/tmp/1.apk
Failure [INSTALL_FAILED_ALREADY_EXISTS]
[100%] /data/local/tmp/quicksupport.apk
    pkg: /data/local/tmp/quicksupport.apk
Failure [INSTALL_FAILED_ALREADY_EXISTS]
0123456789ABCDEF       device usb:337641472X product:msm8960 model:msm8960 device:msm8960
Result: Parcel(00000000    '....')

###########################
#                         #
# Configuration complete! #
#                         #
###########################
00000000  4c 69 73 74 20 6f 66 20  64 65 76 69 63 65 73 20  |List of devices |
00000010  61 74 74 61 63 68 65 64  0a 30 31 32 33 34 35 36  |attached.0123456|
00000020  37 38 39 41 42 43 44 45  46 20 20 20 20 20 20 20  |789ABCDEF       |
00000030  64 65 76 69 63 65 20 75  73 62 3a 34 33 37 33 38  |device usb:43738|
00000040  37 32 36 34 58 20 70 72  6f 64 75 63 74 3a 6d 73  |7264X product:ms|
00000050  6d 38 39 36 30 20 6d 6f  64 65 6c 3a 6d 73 6d 38  |m8960 model:msm8|
00000060  39 36 30 20 64 65 76 69  63 65 3a 6d 73 6d 38 39  |960 device:msm89|
00000070  36 30 0a 30 31 32 33 34  35 36 37 38 39 41 42 43  |60.0123456789ABC|
00000080  44 45 46 20 20 20 20 20  20 20 64 65 76 69 63 65  |DEF       device|
00000090  20 75 73 62 3a 33 33 36  35 39 32 38 39 36 58 20  | usb:336592896X |
000000a0  70 72 6f 64 75 63 74 3a  6d 73 6d 38 39 36 30 20  |product:msm8960 |
000000b0  6d 6f 64 65 6c 3a 6d 73  6d 38 39 36 30 20 64 65  |model:msm8960 de|
000000c0  76 69 63 65 3a 6d 73 6d  38 39 36 30 0a 0a        |vice:msm8960..|
000000ce

共有1个答案

贺兴平
2023-03-14

这是一种更有效、更不容易出错的方法:

DeviceConfig () {

# INSTALL THE APPS
adb -s $1 install ./src/apps/1.apk
adb -s $1 install ./src/apps/quicksupport.apk

# SET WIFI OFF
adb -s $1 shell settings put global wifi_on 0

...

adb -s $1 reboot

}

for usb in $(adb devices -l | awk '/ device usb:/{print $3}'); do DeviceConfig $usb; done
 类似资料:
  • 我注意到一个问题,当从shell脚本循环运行多个adb命令时,大多数命令都不会执行。 这是一个示例脚本。 脚本名称:: 注释掉adb命令的输出 我连接了5台设备。在不使用theadab命令的情况下从bash文件运行时,这是输出。它遍历5个循环中的每一个。 包含ADB命令的循环输出 当取消注释adb shell命令时,它只会正确地迭代第一个循环的行。这是未注释adb命令时的输出: 有人能解释一下这种

  • 问题内容: 我有一个bash脚本,在其中我需要遍历find命令的输出的每一行,但是看来我正在遍历find命令中的每个Word(以空格分隔)。到目前为止,我的脚本如下所示: 我希望这会产生如下输出: 但是我很想得到这样的输出: 我在这里做错了什么? 问题答案: 由于您没有使用的任何更高级的功能,因此可以使用简单的模式来遍历子目录:

  • 当我试图登录本地postgres数据库并提交查询时,我的BASH脚本中的psql命令遇到了问题。我以以下方式使用该命令: 但是,我收到以下错误消息。 PSQL: FATAL:用户"postgres"的身份验证失败 在我将以下更改附加到 /var/lib/pgsql/data/pg_hba.conf后,从命令行运行非常好: 本地所有信任 托管所有127.0.0.1/32信任 另外,能否验证一下这一点

  • 我需要类似于bash历史的命令历史记录。我需要在Android手机中创建一个历史文件。 有没有这样的功能 如果没有,任何人都可以将我指向中的代码,在那里它从桌面接收命令? 我可以实现同样的功能。 我尝试在Android上启用外壳历史记录,但它不适用于调用的命令。

  • 问题内容: 我正在尝试使用命令记录bash会话。 该命令是从bash脚本开始执行的,但是一旦执行,bash脚本就会终止。 我尝试使用各种组合来始终以相同的结果调用命令(调用该命令后立即终止bash脚本)。我得到的输出如下: 我也尝试过最后用a来调用命令,但是再次失败了。 谁能告诉我如何从bash脚本调用命令? 谢谢 问题答案: 您的Shell脚本没有终止。它仍在运行。您会收到提示,因为正在生成新的

  • 我已经写了一个脚本,在我的Ubuntu发行版上作为自动点击器工作。点击工作,但'sleep‘命令似乎不能正常工作。如果我取出click并从terminal运行它,那么sleeps将按预期工作。但是当我将它绑定到一个快捷方式并且在玩游戏的时候运行它的时候,它并没有Hibernate,看起来它只是一直点击。 最重要的Hibernate是break_intervalHibernate,因为它将高压灭菌器