bashscript spørgsmål
Hey forum.
Lige et spørgsmål omkring bashscripts.
Da jeg gerne vil have et bashscript der automatisk trækker et nummer imellem 1- 20 og gemmer det i en variabel som jeg så kan kalde senere i scriptet. Denne variabel skal hver 5.gang dog være 11!
Hvordan gør jeg det nemmest.
Har gogglet nogle algoritmer - men syntes ikke rigtig der er noget der passer rigtig til mit ønske.
Hvordan ville i skrive sådanne et script??
Det er selve hvordan vælges tallet og hvordan sikrer jeg mig at hver 5. gang er det 11.
Lige et spørgsmål omkring bashscripts.
Da jeg gerne vil have et bashscript der automatisk trækker et nummer imellem 1- 20 og gemmer det i en variabel som jeg så kan kalde senere i scriptet. Denne variabel skal hver 5.gang dog være 11!
Hvordan gør jeg det nemmest.
Har gogglet nogle algoritmer - men syntes ikke rigtig der er noget der passer rigtig til mit ønske.
Hvordan ville i skrive sådanne et script??
start script.
vælg tilfældigt tal (Dog hver 5.gang SKAL det være tallet 11 )
kald kommandoen
wget http://gæt.en.side.dk/$
slut script
Det er selve hvordan vælges tallet og hvordan sikrer jeg mig at hver 5. gang er det 11.
Kommentarer7
Re: bashscript spørgsmål
Men hmmm nu har jeg lavet det således:
# Udvælgelse af tilfældigt tal
function dice20() {
dice = $[( $RANDOM % 20 ) + 1 ]
}
while [true]; do
let count+=1
dice20
if [ $((count % 5)) = 0]; then
dice=11
fi
echo $count
echo $dice
done
for at teste det engang - men får denne fejl inden.
./test.sh
./test.sh: line 12: [true]: command not found
Så i princippet - skal jeg ændre true - til at indeholde et konkret boolean mulighed.
Men er nu ikke lige så fandens stærk i bash.
Re: bashscript spørgsmål
[ ], er det samme som kommandoen test, og som alle andre programmer skal argumenterne dertil adskilles af whitespace.
[true] == testtrue
[ true ] == test true
Ok - Så langt så godt.
Nu
Nu er mit problem følgende error:
./test.sh: line 12: dice: command not found
3841
11
./test.sh: line 12: dice: command not found
3842
11
./test.sh: line 12: dice: command not found
3843
11
./test.sh: line 12: dice: command not found
3844
11
./test.sh: line 12: dice: command not found
3845
11
./test.sh: line 12: dice: command not found
3846
11
./test.sh: line 12: dice: command not found
3847
Hvor dette bare er de nederste linier - Men den løber totalt i ring. Linie 12 i mit script er denne linie:
dice = $[( $RANDOM % 20 ) + 1 ]
Re: bashscript spørgsmål
Her er den endelige plan som det reelt er og skal være.
Dette script skal ligge i /etc/cron.hourly og kaldes den ene gang i tiumen - løbes igennem og afslutte med en wget kommando.
Som det er nu løber dette script i ring.
Min mening er at det den ene gang i timen kalder scriptet - Skifter en kanal via wget og derefter afslutter.
Næste time kaldes det igen osv.
Men hver 5 gang det kaldes skal dette script ende med at kalde tallet 11!
Så der skal vel laves en del om for dette. Men mere hvordan jeg får det til kun at løbe igennem 1gang og derefter afslutte ( dog skal det stadig huske hver 5. gang skal det være 11)
Sorry for besværet og tusind tak for hjælpen!
Selve scriptet omkring genereringen kører, Men som det er nu - husker den vel kun tallet fra sidst - indenfor while-løkken?
prøv #!/bin/bash #
#!/bin/bash
# Udvælgelse af tilfældigt tal
function dice20()
{
RANGE=20
dice=$RANDOM
(( dice %= $RANGE ))
}
# Findes fil med værdien for count ellers opret den med værdien 0
if [[ ! -e mycount.counter ]]; then
echo "count=0" > mycount.counter
fi
# while [ true ]; do
# Hent værdien for count fra filen mycount.count
. mycount.counter
(( count += 1 ))
dice20
if [[ $count -eq 5 ]]; then
dice=11
count=1
fi
# Gem den nye værdi for count i filen mycount.counter
echo "count=$count" > mycount.counter
# echo $count
# echo $dice
# done
Re: bashscript spørgsmål
Dermed så kom det til at fungere rigtigt - tusind tak.
Re: bashscript spørgsmål
Men tak for hjælpen og forklaringer
P