我正在创建一个闹钟脚本,因为我还没有找到一个好的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
。
我完全迷失了 - 先谢谢你!
答案 0 :(得分:1)
与Linux一样,有许多可行的解决方案可以解决您的困境。
最简单的想法是在命令末尾输入&
符号:
mpv audio_file.wav &
这应该为音频文件生成一个新进程。