定时器程序依次播放 4 个声音,每个声音 30 秒

fix*_*it7 0 bash scripts ubuntu-mate 20.04

有人可以帮助我吗?我需要一个 bash 脚本来播放一个短声音文件,等待 30 秒,播放另一个声音文件,再等待 30 秒。

(我会以此作为提醒,在使用电动牙刷时,在牙齿的每个象限上花费 30 秒。)

mpg123 /usr/share/sounds/My_Sounds/Alarm_Clock_Sound.mp3
sleep 30
mpg123 /usr/share/sounds/My_Sounds/Alarm-sound-buzzer.mp3
sleep 30
mpg123 /usr/share/sounds/My_Sounds/facility-alarm.mp3
sleep 30
Run Code Online (Sandbox Code Playgroud)

但它只播放第一个声音文件。??

Raf*_*ffa 6

(我会用它来提醒我在使用电动牙刷时刷牙的每个象限。)

我不得不说,这是我听过的最奇怪的原因之一(现在电动牙刷有内置定时器):D ...也许,您更希望计算机也给您提供语音指令,如下所示:

{
t=$(date +"%s")

while true
  do
    n=$(date +"%s")
    ((n<=(t+30))) && spd-say -w 'Brush Upper Left Quadrant'
    ((n>(t+30) && n<=(t+60))) && spd-say -w 'Brush Upper Right Quadrant'
    ((n>(t+60) && n<=(t+90))) && spd-say -w 'Brush Lower Left Quadrant'
    ((n>(t+90) && n<=(t+120))) && spd-say -w 'Brush Lower Right Quadrant'
    ((n>(t+120))) && break
    done
}
Run Code Online (Sandbox Code Playgroud)

或者让它少一些喋喋不休,如下所示:

{
f=(
'Brush Upper Left Quadrant'
'Brush Upper Right Quadrant'
'Brush Lower Left Quadrant'
'Brush Lower Right Quadrant'
'Congratulations, mission accomplished'
)

for i in {0..4}
  do
    spd-say -w "${f[$i]}"
    [ "$i" -lt 4 ] && sleep 30
    done
}
Run Code Online (Sandbox Code Playgroud)

或者将timeout命令与您的播放器和音频文件一起使用,如下所示:

{
f=(
'Brush Upper Left Quadrant'
'Brush Upper Right Quadrant'
'Brush Lower Left Quadrant'
'Brush Lower Right Quadrant'
'Congratulations, mission accomplished'
)

for i in {0..4}
  do
    spd-say -w "${f[$i]}"
    [ "$i" -lt 4 ] && sleep 30
    done
}
Run Code Online (Sandbox Code Playgroud)

或者使用sleepBash 内置函数,kill如下所示:

{
timeout 30 mpg123 --loop -1 /usr/share/sounds/My_Sounds/Alarm_Clock_Sound.mp3
timeout 30 mpg123 --loop -1 /usr/share/sounds/My_Sounds/Alarm-sound-buzzer.mp3
timeout 30 mpg123 --loop -1 /usr/share/sounds/My_Sounds/Alarm_Clock_Sound.mp3
timeout 30 mpg123 --loop -1 /usr/share/sounds/My_Sounds/Alarm-sound-buzzer.mp3
}
Run Code Online (Sandbox Code Playgroud)

或者播放每个文件一次,然后等待 30 秒,然后继续播放下一个文件,如下所示:

{
f=(
'/usr/share/sounds/My_Sounds/Alarm_Clock_Sound.mp3'
'/usr/share/sounds/My_Sounds/Alarm-sound-buzzer.mp3'
'/usr/share/sounds/My_Sounds/Alarm_Clock_Sound.mp3'
'/usr/share/sounds/My_Sounds/Alarm-sound-buzzer.mp3'
)

for i in {0..3}
  do
    mpg123 --loop -1 "${f[$i]}" &> /dev/null & p="$!"
    sleep 30
    kill "$p"
    done
}
Run Code Online (Sandbox Code Playgroud)