2017-08-01 77 views
0

由於我還沒有找到好的Linux鬧鐘,因此我正在創建鬧鐘腳本,並且我決定學習Bash腳本(再次)是個好主意, 。我正在研究製作一個播放鬧鐘聲音的程序(蜂鳴聲完整音量),我希望程序能夠在關閉聲音之前解決一些基本代數問題。然而,我無法弄清楚如何在播放聲音的同時尋求解決方案並等待我的輸入,這樣可以消除噪音。我甚至不知道我會用什麼表達來強制mpv在後臺嚴格執行。 &;等待行終止,我無法通過使用parallel來解決它。我也嘗試將輸出指向/dev/null,因爲這似乎是其他人的答案,但它不適用於我的問題(在mpv終止之前沒有任何反應,這似乎很明顯,因爲它只忽略輸出權限?)。如何在Bash中運行程序時播放聲音文件

這是我到目前爲止已經完成(非常基本的,只具有結構,所以我可以用它進行編程):

# !/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

看看Bash的'coproc'關鍵字。 – RTLinuxSW

回答

1

和往常一樣,Linux有很多可行的解決方案來解決你的困境。

想到的最簡單的就是在你的命令的年底進入&標誌:

mpv audio_file.wav & 

這應該產生新的進程的音頻文件。

+0

謝謝。我實際上想過'&',但我沒有意識到這兩個命令必須分開。我試着像'command1&command2'那樣把它當作刺激性的運行,但顯然這是一個非常不同的事情。在另一行上鍵入'command1&'在另一行上運行,'command2'在另一行上運行。 – Jareg