如何将字母加键盘组合发送到adb shell?
How to send letters plus keyboard combination to adb shell?
从 Linux 命令行到 运行 我的程序我这样做:
- 亚行shell
- cd /数据/
- ./devprog 计数
要停止,我需要输入字母“T”,然后按回车键,否则 devprog 将永远保持 运行ning。我想找到一种方法 运行 devprog 三秒钟,然后通过发送键盘键“T + Enter”正确退出 devprog。我怎样才能做到这一点,或者甚至可以用 shell?
我尝试了以下方法:
- 超时 3s adb shell ./data/devprog 计数
- adb shell ./data/devprog 计数 & 超时 3s | T
我不知道还能对 运行 我的程序做些什么三秒钟然后退出带有关键字组合的命令。
注意:我试过 adb shell ./data/devprog count & sleep 3 | xargs adb shell 杀死。这将停止程序,但不会 return devporg 的任何输出。
#!/usr/bin/env bash
adb shell < <(
printf '%s\n' \
'cd /data || exit' \
'exec ./devprog count'
sleep 3
printf '%s\n' T
)
解释其中不明显的部分:
<(...)
是一个process substitution; shell 将其替换为引用 FIFO 的文件名,从中可以读取 ...
的输出。
adb shell < <(...)
因此 运行s adb shell
,其输入从具有嵌入式代码的进程替换重定向。
printf '%s\n' "some text" "some more text"
写两行,先是some text
,然后是some more text
。我们用这个来无条件地写出我们想要的命令 运行.
- 在
cd
上使用 || exit
可防止脚本在 cd
失败时继续执行 运行,因此我们不会调用可能在外部行为不可预测的命令他们预期的环境。
- 在
exec ./devprog count
中使用exec
将远程shell替换为./devprog
的副本,因此我们无需担心如果[=23]会发生什么=] 提早退出并让我们回到 shell 中:通过所做的更改,可以保证当 ./devprog
退出时,远程 shell. 也会退出
为什么我们使用进程替换而不是 heredoc?那是因为 heredoc 在执行开始之前被完全评估,所以在 heredoc 中嵌入类似 $(sleep 3)
的东西会延迟 adb
开始,但它不会造成延迟 while adb
是 运行宁.
从 Linux 命令行到 运行 我的程序我这样做:
- 亚行shell
- cd /数据/
- ./devprog 计数
要停止,我需要输入字母“T”,然后按回车键,否则 devprog 将永远保持 运行ning。我想找到一种方法 运行 devprog 三秒钟,然后通过发送键盘键“T + Enter”正确退出 devprog。我怎样才能做到这一点,或者甚至可以用 shell?
我尝试了以下方法:
- 超时 3s adb shell ./data/devprog 计数
- adb shell ./data/devprog 计数 & 超时 3s | T
我不知道还能对 运行 我的程序做些什么三秒钟然后退出带有关键字组合的命令。
注意:我试过 adb shell ./data/devprog count & sleep 3 | xargs adb shell 杀死。这将停止程序,但不会 return devporg 的任何输出。
#!/usr/bin/env bash
adb shell < <(
printf '%s\n' \
'cd /data || exit' \
'exec ./devprog count'
sleep 3
printf '%s\n' T
)
解释其中不明显的部分:
<(...)
是一个process substitution; shell 将其替换为引用 FIFO 的文件名,从中可以读取...
的输出。adb shell < <(...)
因此 运行sadb shell
,其输入从具有嵌入式代码的进程替换重定向。printf '%s\n' "some text" "some more text"
写两行,先是some text
,然后是some more text
。我们用这个来无条件地写出我们想要的命令 运行.- 在
cd
上使用|| exit
可防止脚本在cd
失败时继续执行 运行,因此我们不会调用可能在外部行为不可预测的命令他们预期的环境。 - 在
exec ./devprog count
中使用exec
将远程shell替换为./devprog
的副本,因此我们无需担心如果[=23]会发生什么=] 提早退出并让我们回到 shell 中:通过所做的更改,可以保证当./devprog
退出时,远程 shell. 也会退出
为什么我们使用进程替换而不是 heredoc?那是因为 heredoc 在执行开始之前被完全评估,所以在 heredoc 中嵌入类似 $(sleep 3)
的东西会延迟 adb
开始,但它不会造成延迟 while adb
是 运行宁.