要将我的 Android 手机投射到桌面,我输入以下终端命令:
adb tcpip 5037
adb connect 192.168.0.xxx:5037
scrcpy
问题是 xxx 每天都会更改,这导致我必须找到 xxx 并手动输入所有命令。我想要一个脚本来自动执行此任务。我熟悉 do 循环,但不熟悉 bash 语言。此外,我不知道连接失败时的返回代码是什么。
基本上,我需要一个 do 循环来循环遍历 xxx,从 100 开始,增量=1。
我会用简单的英语将该算法写成:
execute adb tcpip 5037
let xxx=100
until successful connection, do...
execute adb connect 192.168.0.xxx:5037
if no connect, then xxx=xxx+1
else enddo
execute scrcpy
有人可以帮我为 bash 编写这个代码吗?
最佳选择
我假设这是家庭 Wi-Fi 设置。你使用的是哪种路由器?谷歌搜索如何在路由器中为特定设备(即你的手机)保留 IP 地址。在路由器中,你将找到手机的 MAC 地址以及与该 MAC 地址关联的当前 IP 地址。在路由器中为该 MAC 地址保留当前 IP 地址。保存设置。
我通过 Firefox 等网络浏览器访问路由器的设置页面
192.168.0.1
。在路由器中,当我在左侧面板上选择“网络”>“DHCP 服务器”时,主窗口中会出现“地址保留”部分。在那里,我可以为设备保留特定的 IP 地址。见下文:您的路由器设置可能看起来不同。
你要求什么
adb connect
总是会回来0
看起来
adb connect
无论连接是否建立都会返回退出代码 0。如果我输入adb nonsense
它显示“未知命令nonsense
并返回退出代码”1
。因此下面的脚本不起作用。使用
grep
下一个脚本在生成的输出中查找单词“failed”,
adb connect...
并继续迭代,直到输出不包含单词“failed”。创建一个文件/home/$USER/bin/PhoneCast.sh
:使用以下命令使文件可执行:
通过输入以下内容来运行脚本:
如果一切正确它就应该可以工作。
它是如何工作的?
查找
until
数值 0。运行时adb connect...
它始终返回 0,但如果命令连接失败,它会产生包含单词“failed”的文本输出。该输出通过管道传输到命令中,该命令检查 的输出中是否不存在grep
单词“failed” (选项) 。-v
adb connect...
现在
until
正在检查退出命令,如果在输出中找不到单词“失败”,则grep
返回0
adb connect...
将
((x+=1))
x 的值加 1。该
if
行检查 x=255 并退出脚本。请注意,scrcpy
如果 x 达到 254 且连接失败,它将不会运行最后一行。希望这可以帮助
也许这对你有用?即使没有连接,adb 命令也总是返回 true(成功)?
附言:我找不到“scrcpy”命令?