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

How to play a sound file while running a program in Bash

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

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

 # !/bin/zsh

 function math (){ 
     echo MATH
     read answer
     if (( ("$answer") ==  )); 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 MATHmpv播放完声音后出现。

我的梦想是让 mpv 作为一个完全独立的进程,这样它就不会影响 alarm.sh 然后 kill -9 mpv 一旦 if 条件 "passes".

我完全迷路了 - 提前致谢!

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

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

mpv audio_file.wav &

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