37 lines
671 B
Bash
37 lines
671 B
Bash
#! /bin/bash
|
|
|
|
proc_is_running() {
|
|
ps aux | grep -v grep | awk '{print $2}' | grep ^"$1"$ &> /dev/null
|
|
}
|
|
|
|
block_proc() {
|
|
local pid="$1"
|
|
local limit="${TIMEOUT:-100}"
|
|
deadline=$(($(date +%s) + limit))
|
|
while [ $(date +%s) -lt $deadline ] && proc_is_running "$pid"; do
|
|
sleep 1
|
|
done
|
|
kill -9 "$pid" &> /dev/null
|
|
}
|
|
|
|
main() {
|
|
cleanup() {
|
|
kill -9 $(jobs -p)
|
|
killall afplay mpv
|
|
}
|
|
trap cleanup EXIT
|
|
|
|
for f in ./script.d/*.wav; do
|
|
if [ "$#" != "0" ]; then
|
|
eval "$1"
|
|
else
|
|
read -p "enter to play <$f>"
|
|
fi
|
|
mpv --no-video "$f" &
|
|
export pid=${!}
|
|
block_proc $pid
|
|
done
|
|
}
|
|
|
|
main "$@"
|