2015-01-15 20 views
0

我是shell脚本编程新手(和编程有关的问题,请亲切)。 我已经在Linux Mint上写了一个脚本,当我的电池电量达到15%时会通知(使用xcowsay)我将播放声音(在第二个脚本中)“deththeme.wav” 基本上我想要我的shell脚本的第二部分在充电器插入时终止。我尝试过使用无限循环,并且退出命令,这没有奏效。我的剧本中的其他内容完全按照我想要的方式工作。这里是我的代码:在我的shell脚本中,如何在充电器插入时使声音停止播放?

#!/bin/bash 

    while true 
    do 

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

     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 $3'}` 
      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 $3'}` 

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

回答

1

的问题是,play在前台运行,所以你的脚本等待它继续检查充电状态之前完成。

下面是一个简单的例子,它在后台播放声音,等待5秒钟,然后杀死播放器。您可以将sleep替换为等待充电的东西:

play -q somefile.wav & 
sleep 5 
kill $! 
相关问题