Script bugg..

Här diskuteras programmering och utveckling
Användarvisningsbild
Beakon
Inlägg: 468
Blev medlem: 02 jun 2007, 21:50
OS: Ubuntu
Utgåva: 14.04 Trusty Tahr LTS
Ort: Stockholm

Script bugg..

Inlägg 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..."
Bild
Linux - Bringing back the joy of computing
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

Re: Script bugg..

Inlägg 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.
Användarvisningsbild
Beakon
Inlägg: 468
Blev medlem: 02 jun 2007, 21:50
OS: Ubuntu
Utgåva: 14.04 Trusty Tahr LTS
Ort: Stockholm

Re: Script bugg..

Inlägg 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.
Bild
Linux - Bringing back the joy of computing
Skriv svar

Återgå till "Programmering och webbdesign"