如何在Bash脚本中模拟adb shell命令的用户输入?
解决ADB Shell交互式命令自动输入固定值的问题
以下几种方法可以解决你遇到的问题:
方法1:使用管道传递输入
这是最简洁可靠的方式,通过echo将输入值通过管道传递给ADB Shell中的命令,让命令直接读取标准输入的内容:
echo "1" | adb shell "your_interactive_command_here"
原理是adb shell会把本地的标准输入转发到设备端的命令进程,设备上的命令在等待输入时会直接读取到"1",无需手动交互。
方法2:使用Here-String传递输入
如果你的本地Shell支持Here-String(比如Bash),可以用更直观的写法:
adb shell "your_interactive_command_here" <<< "1"
效果和管道一致,将"1"作为输入传递给设备端的命令。
方法3:模拟物理键盘输入(适合特殊交互式场景)
如果上述管道方法无效(比如命令是图形化交互式程序,不读取标准输入),可以先启动命令,再通过adb input模拟键盘输入:
# 后台启动目标命令 adb shell "nohup your_interactive_command_here > /dev/null 2>&1 &" # 短暂等待命令加载完成(时间根据实际情况调整) sleep 1 # 模拟输入"1"并回车 adb input text "1" && adb input keyevent KEYCODE_ENTER
这种方法依赖等待时间,稳定性稍差,但适用于不接受标准输入的交互式场景。
注意:如果目标命令需要sudo权限,可调整写法结合输入:
echo "1" | adb shell "echo 'your_sudo_password' | sudo -S your_interactive_command_here"
内容的提问来源于stack exchange,提问作者David Sevic
相关产品推荐
相关产品推荐

