linux - 通过键盘快捷键切换 espeak 的 Bash 脚本
问题描述
要大声朗读 GUI 中选定的文本,我使用命令xsel | espeak-ng -v mb-us3 -p3 -s135
。为了阻止它,我使用killall -s STOP espeak-ng
. 重新开始吧killall -s CONT espeak-ng
。
所有 3 个命令都有效,但我不会让我存档正确的结果。问题出在我认为的 if 和 case 语句中。我将它们分配给键盘快捷键。
如果 espeak-ng 已经在运行,我想管理这个 shellscript 以在大声朗读和停止朗读过程之间切换。如果它还没有运行 bash 应该启动它。
0 #!/bin/bash
1 # Name: espeak-en.sh
2 # Author: Karsten Zarth
3 # Created: 2020-08-23
4 # Description: Textselection in GUI is read aloud with english
5 # male voice with espeak-ng and mbrula
6 # if already reading: stop
7 # if stopped: continue
8 # Modified: 2020-08-23
9
10 status=`ps -ef| grep espeak-ng| grep -v grep| awk '{print $5}"`
11
12 if [[ $(pgrep -x espeak-ng) ]]
13 then
14 case $status in
15 Tl) killall -s CONT espeak-ng;;
16 Sl) killall -s STOP espeak-ng;;
17 esac
18 else
19 xsel | espeak-ng -v mb-us3 -p3 -s135
20 fi
我什至不知道如何测试以下输出:if [[ $(pgrep -x espeak-ng) ]]
有人可以帮我找出问题所在并给我一些提示吗?提前谢谢了。
解决方案
在自己挣扎了一下之后,我发现打印出一些值的顺序ps -ef
和顺序之间存在差异......ps ax
我也不得不承认第 10 行的结尾看起来很糟糕。它必须是...print $5}'`
。因为和之间的区别ps -ef
,ps ax
当然是必须的...print $3}'`
。
顺便一提。依赖项是xsel
并且espeak-ng
至少有一个 mbrola-voice。
现在它起作用了。这是完整的代码:
0 #!/bin/bash
1 # Name: espeak-en.sh
2 # Author: Karsten Zarth
3 # Created: 2020-08-23
4 # Description: Textselection in GUI is read aloud with english
5 # male voice with espeak-ng and mbrula
6 # if already reading: stop
7 # if stopped: continue
8 # Modified: 2020-08-24
9
10 status=`ps ax| grep espeak-ng| grep -v grep| awk '{print $3}'`
11
12 if [[ $(pgrep -x espeak-ng) ]]
13 then
14 case $status in
15 Tl) killall -s CONT espeak-ng;;
16 Sl) killall -s STOP espeak-ng;;
17 esac
18 else
19 xsel | espeak-ng -v mb-us3 -p3 -s135
20 fi
推荐阅读
- matlab - Matlab 命令“gmres”是否支持带有非线性预条件器的灵活 gmres?
- kotlin - 如何为同一用户 ID 中的每个活动将数据插入到 Firebase 数据库中 - Kotlin
- html-email - Apple Mail Signature 的 Webfont 可能吗?
- javascript - Angular 8 项目中的外部 .js 文件
- kubernetes - 我们可以创建服务来链接来自不同部署的两个 POD >
- html - CSS FLEXBOX:如何在 justify-content:space-between 网格中将最后一项对齐到左侧
- prometheus - 如何在 grafana 中动态查询 prometheus 抓取配置?
- php - 如何在没有.php的情况下重定向php文件
- java - Spring MockMvc 集成测试配置
- php - 你如何在 PHP 中解析这个日期