Slumpa fram ett klockslag med date? [LÖST]
Slumpa fram ett klockslag med date? [LÖST]
Jag behöver modifiera date så att det slumpar fram en tid. Det är bara klockslaget som ska slumpas fram, inte året, månaden eller veckan. Hur gör jag för att mha kommandot date slumpa fram ett klockslag under ett dygn? Det bästa kanske är att använda olika options på date och sedan helt enkelt slumpa fram ett tal mellan 00 och 23 och ett som spänner mellan 00 och 63 eller vad som nu gäller om jag ska slumpa fram ett klockslag. Vad säger ni?
Hur slumpar man bäst fram ett heltal i en intervall i ett skript?
Hur slumpar man bäst fram ett heltal i en intervall i ett skript?
Senast redigerad av 1 ubot, redigerad totalt 3 gånger.
-
- Inlägg: 6191
- Blev medlem: 14 jan 2007, 19:31
- OS: Ubuntu
- Utgåva: 22.10 Kinetic Kudu
- Ort: Stockholm
Re: Slumpa fram ett klockslag med date?
Det här slumpar fram ett klockslag som inträffar idag:
Kod: Markera allt
#!/bin/bash
SEKUNDER=$(echo $RANDOM*86400/32767 | bc)
MIDNATT=$(date -d 00:00 +%s)
date -d @$(($MIDNATT+$SEKUNDER))
Re: Slumpa fram ett klockslag med date?
Hmm .... Riktigt rätt kan det ju inte bli va? $RANDOM ger ett tal i intervallet [0..32767] men för att kunna få sekundnoggrannhet under ett dygn räcker ju inte det eftersom dygnet har 60*60*24 s = 86400 s. Men det kanske inte är viktigt?Lars skrev:Det här slumpar fram ett klockslag som inträffar idag:Kod: Markera allt
#!/bin/bash SEKUNDER=$(echo $RANDOM*86400/32767 | bc) MIDNATT=$(date -d 00:00 +%s) date -d @$(($MIDNATT+$SEKUNDER))
För övrigt såg det ju riktigt snyggt ut!
Re: Slumpa fram ett klockslag med date?
Tack för hjälpen. Du är på rätt spår. Jag kör med den här: $((RANDOM * 60 / 32768 )) för sekunder och $((RANDOM * 24 / 32768 )) för timmar osv. På något sätt måste jag nu lägga till en 0:a om timmen är mindre än 10, så att 7 blir 07 osv. I värsta fall får jag väl använda en vanlig if-sats. Jag behöver alltså bara plocka ut timmar, minuter och sekunder för sig, inte alla samtidigt.gusse02 skrev:Hmm .... Riktigt rätt kan det ju inte bli va? $RANDOM ger ett tal i intervallet [0..32767] men för att kunna få sekundnoggrannhet under ett dygn räcker ju inte det eftersom dygnet har 60*60*24 s = 86400 s. Men det kanske inte är viktigt?Lars skrev:Det här slumpar fram ett klockslag som inträffar idag:Kod: Markera allt
#!/bin/bash SEKUNDER=$(echo $RANDOM*86400/32767 | bc) MIDNATT=$(date -d 00:00 +%s) date -d @$(($MIDNATT+$SEKUNDER))
För övrigt såg det ju riktigt snyggt ut!
-
- Inlägg: 6191
- Blev medlem: 14 jan 2007, 19:31
- OS: Ubuntu
- Utgåva: 22.10 Kinetic Kudu
- Ort: Stockholm
Re: Slumpa fram ett klockslag med date?
Du kan använda printf för att få dit nollan, typ printf %02d $TIMME
- Konservburk
- Inlägg: 5919
- Blev medlem: 07 apr 2007, 22:28
Re: Slumpa fram ett klockslag med date?
Menar du modifiera som i att ändra källkoden?ubot skrev:Jag behöver modifiera date så att det slumpar fram en tid.
Jag brukar använda $((RANDOM%a+b)), där a är intervallets storlek och b är det minsta talet:Hur slumpar man bäst fram ett heltal i en intervall i ett skript?
Kod: Markera allt
a=3
b=5
echo $((RANDOM%a+b))
Det ger dig antingen 5, 6 eller 7.
Du kan skippa b helt om intervallet börjar vid 0 som för minuter eller timmar:
Kod: Markera allt
# ett slumptal mellan 0 och 23:
echo $((RANDOM%24))
# ett slumptal mellan 0 och 59:
echo $((RANDOM%60))
Du kan få bättre slumptal från /dev/random
-
- Inlägg: 6191
- Blev medlem: 14 jan 2007, 19:31
- OS: Ubuntu
- Utgåva: 22.10 Kinetic Kudu
- Ort: Stockholm
Re: Slumpa fram ett klockslag med date?
Det har du naturligtvis helt rätt igusse02 skrev:Hmm .... Riktigt rätt kan det ju inte bli va? $RANDOM ger ett tal i intervallet [0..32767] men för att kunna få sekundnoggrannhet under ett dygn räcker ju inte det eftersom dygnet har 60*60*24 s = 86400 s. Men det kanske inte är viktigt?

Re: Slumpa fram ett klockslag med date?
Nej, min rad löste problemet. Jag behöver inte slumpa fram en tid med mer noggrannhet än mer än timme och minut och då räcker raden jag hade.