首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bash-通过键盘快捷键切换espeak的脚本

Bash-通过键盘快捷键切换espeak的脚本
EN

Stack Overflow用户
提问于 2020-08-24 04:16:15
回答 1查看 113关注 0票数 0

要在图形用户界面中大声朗读选定的文本,我使用命令xsel | espeak-ng -v mb-us3 -p3 -s135。为了停止它,我使用了killall -s STOP espeak-ng。要重新启动它,killall -s CONT espeak-ng

这3个命令都能用,但是我这个菜鸟不让我把正确的结果归档。我认为问题出在if- and case-语句中。我给他们分配了一个键盘快捷键。

我想管理这个espeak脚本,以便在高声朗读和停止高声朗读进程之间切换,前提是espeak ng已经运行。如果它还没有运行,bash应该会启动它。

代码语言:javascript
复制
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) ]]的输出:

有人能帮我找出哪里出了问题并给我一些提示吗?在此之前,非常感谢您。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-25 02:06:04

经过我自己的努力,我发现ps -efps ax在打印一些值的顺序上是有区别的……

另外,我必须承认第10行的结尾看起来很糟糕。它必须是...print $5}'`。由于ps -efps ax之间的不同,它当然必须是...print $3}'`

顺便说一下。依赖项是xselespeak-ng,以及至少一个mbrola-voice。

现在它起作用了。下面是完整的代码:

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63551590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档