如何在Bash中运行程序时播放声音文件

时间:2017-08-01 15:48:18

标签: linux bash mpv

我正在创建一个闹钟脚本,因为我还没有找到一个好的Linux闹钟,我认为学习Bash脚本(再次)是个好主意。我正在研究制作一个发出警报声的节目(哔哔哔哔声)我希望程序让我在关闭声音之前解决一些基本的代数问题。然而,我无法弄清楚如何播放声音,同时它要求解决方案并等待我的输入,以便它可以关闭噪音。我甚至不知道我会用什么表达来强制mpv在后台严格操作。 &;等待该行终止,我无法使用parallel解决此问题。我也尝试将输出定向到/dev/null,因为这似乎是其他人的答案,但它不适用于我的问题(在mpv终止之前没有任何事情发生,这看起来很明显,因为它只会忽略输出吗?)

这是我到目前为止所做的事情(非常基本,只有结构,所以我可以用它编程):

 # !/bin/zsh

 function math (){ 
     echo MATH
     read answer
     if (( ("$answer") == $1 )); then
         echo PASS    
     else
         echo FAIL
     fi  
 }

 echo 'Alarm'

 let "NUM1=(($RANDOM % 10) * 3)";
 let "NUM2=(($RANDOM % 10) * 3)";

 let "m = $NUM1 * $NUM2"

 printf "%d * %d = %d" "$NUM1" "$NUM2" "$m"

 mpv alarm_sound.wav ; #>/dev/null 2>&1
 math m
echo MATH播放完声音后,

mpv来了。

我的梦想是让mpv作为一个完全独立的过程,一旦if条件“通过”,它就不会影响alarm.sh,然后kill -9 mpv

我完全迷失了 - 先谢谢你!

1 个答案:

答案 0 :(得分:1)

与Linux一样,有许多可行的解决方案可以解决您的困境。

最简单的想法是在命令末尾输入&符号:

mpv audio_file.wav &

这应该为音频文件生成一个新进程。