2017-08-01 5 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 MATHmpvは、サウンドの再生が終了した後に来ます。

私の夢は、完全に独立したプロセスとして動作するようにして、alarm.shに影響しないようにすることです。そして、一度if条件が "通過"するとkill -9 mpvになります。

私は完全に失われています - 事前に感謝!

+0

Bashの 'coproc'キーワードを見てください。 – RTLinuxSW

答えて

1

Linuxではいつものように、あなたのジレンマには多くの実行可能な解決策があります。

頭に浮かぶその最も簡単なあなたのコマンドの末尾に&記号を入力することです。

mpv audio_file.wav & 

これは、オーディオファイルのための新しいプロセスを起動する必要があります。

+0

ありがとうございます。私は実際に「&」と考えましたが、2つのコマンドが別々の行になければなりません。私は 'command1&command2'のように、刺激的に動くかのようにしてみましたが、明らかにそれは非常に異なっています。ある行に 'command1&'を、別の行に 'command2'を入力すると動作します。 – Jareg

関連する問題