• Opret dig
  • Glemt adgangskode

User account menu

  • Artikler
  • Forside
  • Forum
  • Nyheder
  • Log ind
Hjem
LinuxIN.dk

Snak med

Opret dig!

Af peque | 29.10.2008 22:02

bashscript spørgsmål

Hjælp generelt
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??

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.
  • Log ind eller opret dig for at tilføje kommentarer

Kommentarer7

# 1

16 år 8 måneder siden

Permalink

Indsendt af peque den 30. oktober 2008 kl. 09:51

Permalink

Re: bashscript spørgsmål

Kanoin - Takker mange gange . Det var lige det jeg ledte efter med var i tvivl omkring hvordan jeg skulle gøre det

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.

  • Log ind eller opret dig for at tilføje kommentarer

# 2

16 år 8 måneder siden

Permalink

Indsendt af divineant den 30. oktober 2008 kl. 12:12

Permalink

Re: bashscript spørgsmål

og for at du ved hvad der var forkert i #3.
[ ], er det samme som kommandoen test, og som alle andre programmer skal argumenterne dertil adskilles af whitespace.


[true] == testtrue
[ true ] == test true
  • Log ind eller opret dig for at tilføje kommentarer

# 3

16 år 8 måneder siden

Permalink

Indsendt af peque den 30. oktober 2008 kl. 13:16

Permalink

Ok - Så langt så godt.
Nu

Ok - Så langt så godt.
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 ]

  • Log ind eller opret dig for at tilføje kommentarer

# 4

16 år 8 måneder siden

Permalink

Indsendt af peque den 30. oktober 2008 kl. 13:55

Permalink

Re: bashscript spørgsmål

Kanon - nu virker min ide da så langt.

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?
  • Log ind eller opret dig for at tilføje kommentarer

# 5

16 år 8 måneder siden

Permalink

Indsendt af kop den 30. oktober 2008 kl. 14:42

Permalink

prøv #!/bin/bash #

prøv

#!/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
  • Log ind eller opret dig for at tilføje kommentarer

# 6

16 år 8 måneder siden

Permalink

Indsendt af peque den 30. oktober 2008 kl. 14:46

Permalink

Re: bashscript spørgsmål

Se det var lige sagen.

Dermed så kom det til at fungere rigtigt - tusind tak.
  • Log ind eller opret dig for at tilføje kommentarer

# 7

16 år 8 måneder siden

Permalink

Indsendt af peque den 31. oktober 2008 kl. 10:19

Permalink

Re: bashscript spørgsmål

Lagde godt mærke til det - og ændrewde det også så det passede indenfor mine kriterier!

Men tak for hjælpen og forklaringer

P
  • Log ind eller opret dig for at tilføje kommentarer

Svar søges

den er sjov 0
llumos Unix-operativsystem, 0
Den er go 0
14. februar = I Love Free Software Day 0
Lokal fil-deling - for de dovne. 0

Seneste aktivitet

PcLinuxOS er død længe leve Pclosdebian 10
Reserve kernel og btrfs 1
En snak om Linux-kompatibel software 12
PCLinuxOS 28
"Intet realistisk alternativ" - mig i r*ven 17
Open source events i danmark? 3
Virtuel maskine? 4
Gode anmeldelser Zorin OS 17.3 8
Open Source-eksperimentet 5
Nulstilling af adgangskode 6
Ingen Mint 5
Linux App Store Flathub når 3 milliarder downloads 2
Digitaliseringsministeriet sætter gang i pilotprojekt om digital suverænitet 3
Mest sikker webbrowser 5
Firefox 2
Privatbeskeder 7
Backup/synkronisering? 3
BigLinux 5
Chatgpt satire 1
Læsning af databasefil i Firefox 2

© 2025 Linuxin og de respektive skribenter

Oprettet og drevet af nørder siden 2004 !