Как воспроизвести звуковой файл при запуске программы в Bash

Я создаю скрипт будильника, так как я еще не нашел хороший будильник в 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 действовать как полностью независимый процесс, так что он влияет alarm.sh ни в коем случае, а затем kill -9 mpv как только условие if "проходит".

Я полностью потерян - заранее спасибо!

1 ответ

Решение

Как обычно в Linux, есть много жизнеспособных решений вашей дилеммы.

Самое простое, что приходит в голову, это ввести & подпишите в конце вашей команды:

mpv audio_file.wav &

Это должно породить новый процесс для аудио файла.

Другие вопросы по тегам