Eu não tenho o programa deadbeef
para testar, mas parece que quando é parado que a opção --nowplaying
retornará a string "nothing". O script awk está esperando duas vezes, portanto, deve retornar uma divisão por erro zero. No entanto, o seu awk está retornando -2147483647
neste caso.
Você pode tentar editar o script awk para o seguinte para lidar com a verificação da string e também a verificação da divisão por zero no final:
#!/bin/bash
deadbeef --nowplaying "%e %l" |
awk '
/nothing/{ print "0";exit }
{ n = split("::" $1,t,":")
elapsed = (t[n-2]*60+t[n-1])*60+t[n]
n = split("::" $2,t,":")
total = (t[n-2]*60+t[n-1])*60+t[n]
if(total==0)total = 1
printf "%d\n",elapsed*100/total
}'