Sida 1 av 1

Script bugg..

Postat: 12 feb 2009, 04:51
av Beakon
Efter att ha pillat och broderat ut ett script jag tidigare fick hjälp med här del så har jag till slut fått ett script jag är nöjd med förutom på en punkt.
Ibland felar det, "Underflöde !!" (t.ex. "Underflöde !! "åtminstone 3581,764 ms lång) är felkoden och problemet är periodiskt.
Jag misstänker att det ligger någonstans i Random funktionen men har ingen större koll på den.

Någon som eventuellt kan ge en gissning på hur man korrigerar för detta periodiska fel ?
Tidsangivelsen ska helst kunna anges upp till 60 minuter, gärna längre.

Kod: Markera allt

#!/bin/bash
echo "Minst antal min ?"
read MINSEK
echo "Max antal min ?"
read MAXSEK
MINMIN=$(($MINSEK*60))
MAXMIN=$((MAXSEK*60))
TID=$((RANDOM%(1+$MAXMIN-$MINMIN)+$MINMIN))
TIDMIN=$(($TID/60))
echo "Minst $MINSEK, Max $MAXSEK"
#date &> /dev/null
sleep 3
(aplay -q sound.wav) &
echo `date`
sleep $TID
echo Tid: $TIDMIN min
echo `date`
(aplay -q sound.wav)
(aplay -q sound.wav)
read -p "Valfri tangent för att avsluta..."

Re: Script bugg..

Postat: 12 feb 2009, 05:17
av Konservburk
Varför multiplicerar du med 60 innan random-biten om du ändå tänker dela med 60 igen efter den? Känns lite onödigt att riskera overflow bara pga det. Jag misstänker att underflödet har med själva uppspelningen att göra snarare än random-biten.

Re: Script bugg..

Postat: 14 feb 2009, 08:17
av Beakon
Om jag inte minns helt fel så får jag inte random att funka på så låga tal (1-60) och måste därför multiplicera det med 60, dvs ange det i sekunder och därefter köra random.

Kod: Markera allt

#!/bin/bash
echo "Minst antal min ?"
read MINMIN
echo "Max antal min ?"
read MAXMIN
#!MINMIN=$(($MINSEK*60))
#!MAXMIN=$((MAXSEK*60))
TID=$((RANDOM%(1+$MAXMIN-$MINMIN)+$MINMIN))
TIDMIN=$(($TID))
echo "Minst $MINMIN, Max $MAXMIN"
echo $TID
#date &> /dev/null
sleep 3
(aplay -q ljud.wav) &
echo `date`
sleep $TID
echo Tid: $TIDMIN min
echo `date`
(aplay -q ljud.wav)
(aplay -q ljud.wav)
read -p "Valfri tangent för att avsluta..."
Ovanstående ger mig t.ex. alltid läsgta talet.