Как воспроизвести звуковой файл при запуске программы в 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 &
Это должно породить новый процесс для аудио файла.