• 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

17 år 1 måned 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

17 år 1 måned 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

17 år 1 måned 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

17 år 1 måned 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

17 år 1 måned 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

17 år 1 måned 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

17 år 1 måned 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

Fortsat problemer 0
Linux Foundation brugte 8,4 millioner dollars på Linux Kernel projektet i 2025 0
KDE overgår indsamlingsmålet for 2025 med rekordstor støtte fra lokalsamfundet 0
Zypper Package Manager brugervejledning til openSUSE brugere og deres derivater 0
KDE Spectacle tilføjer OCR understøttelse for at kopiere tekst direkte fra skærmbilleder 0

Seneste aktivitet

Nu kan man skrive private beskeder 3
Glædelig Jul 3
Kunstig inteligens 4
Kopiering til min Samsung telefon 5
Mbox mail import til Thunderbird 14
FOSS i Færdselsstyrelsen 2
Program ala Dreamweaver 2
Test af forum 5
Flatpak og hvorfor 1
Har brugt GLF OS, en NixOS-baseret distribution lavet i Frankrig. 2
Crontab 2
[ LØST ] Flere genveje på Firefox skrivebordet 5
Linuxin er nu migreret til Drupal 11 15
Dansk distro til software udviklere 3
Driver til min scanner? 3
Affinity V3 2
copy hvordan 1
Sortering af filer - sort of... 4
Det der ikke må galt gik galt 5
VPN — 8 tests, 1 klar vinder i 2025 3

© 2025 Linuxin og de respektive skribenter

Oprettet og drevet af nørder siden 2004 !