在我的 shell 脚本中,如何在插入充电器时停止播放声音?

In my shell script, how can I make the sound stop playing when my charger is plugged in?

我是 shell 脚本编写的新手(以及与此相关的编程,请多多包涵)。 我在 Linux Mint 上写了一个脚本,它会在我的电池电量达到 15% 时通知我(使用 xcowsay)并播放声音(在第二个脚本中)"deththeme.wav" 基本上我希望我的 shell 脚本的第二部分在插入充电器时终止。我尝试使用无限循环和 exit 命令,但没有用.我脚本中的其他所有内容都完全符合我的要求。这是我的代码:

    #!/bin/bash

    while true
    do

        PLUG=`acpi | awk {'print '}`

        while [ $PLUG = "Discharging," ]
        do
            BATSTAT=`acpi | cut -d , -f 2`
            if [ $BATSTAT = "98%" ]
            then
                sh sound.sh &
                xcowsay --time=10 "Plug that shit in!" | sleep 100
            else
                PLUG=`acpi | awk {'print '}`
            fi
        done
    done

    #!/bin/bash

    x=1
    z=1

    while [ $x = 1 ]
    do
        play -q /home/greg/Documents/deththeme.wav
        x=0
    done

    while [ $z = 1 ]
    do
        PLUG=`acpi | awk {'print '}`

        if [ $PLUG = "Charging," ]
        then
            z=0
        else
            :
        fi
    done

问题是 play 在前台运行,因此您的脚本会等待它完成,然后再继续检查充电状态。

这是一个简单的示例,它在背景中播放声音,等待五秒钟,然后杀死玩家。您可以将 sleep 替换为等待充电的内容:

play -q somefile.wav &
sleep 5
kill $!