Gå til innhold

Linux Shell Script, trenger hjelp


JDC

Anbefalte innlegg

Skal lage en skall script i Linux.

 

Altså jeg må en script program som:

Programmet trekker et tilfeldig tall mellom 1 og 100, bruker skal gjette tallet iterativt (om igjen) til

suksess. For hver runde skal programmet rapportere om bruker sitt forslag er mindre eller større enn

det korrekte. Om bruker foreslår 0 skal det tolkes som at han/hun gir opp, og spillet avsluttes da

med melding om det korrekte tallet. Når et spill er over skal programmet spørre bruker om hun vil

fortsette, og i så fall trekke og starte nytt spill.

 

Kan noen det?

Lenke til kommentar
Videoannonse
Annonse

Skal lage en skall script i Linux.

 

Altså jeg må en script program som:

Programmet trekker et tilfeldig tall mellom 1 og 100, bruker skal gjette tallet iterativt (om igjen) til

suksess. For hver runde skal programmet rapportere om bruker sitt forslag er mindre eller større enn

det korrekte. Om bruker foreslår 0 skal det tolkes som at han/hun gir opp, og spillet avsluttes da

med melding om det korrekte tallet. Når et spill er over skal programmet spørre bruker om hun vil

fortsette, og i så fall trekke og starte nytt spill.

 

Kan noen det?

 

Dette vitner om en skoleoppgave og jeg kommer ikke til å gi deg hele svaret. Hva med at du starter å skrive et Bash script og spør om hjelp når det er nmoe spesifikk du står fast på? Hvis det ikke er en skoleoppgave må du også gjerne presisere hva du ønsker.

 

For å svare på spørsmålet ditt så kan jeg skrive et script som gjør det du spør om ja.

Endret av Zyg0te
Lenke til kommentar

 

Skal lage en skall script i Linux.

 

Altså jeg må en script program som:

Programmet trekker et tilfeldig tall mellom 1 og 100, bruker skal gjette tallet iterativt (om igjen) til

suksess. For hver runde skal programmet rapportere om bruker sitt forslag er mindre eller større enn

det korrekte. Om bruker foreslår 0 skal det tolkes som at han/hun gir opp, og spillet avsluttes da

med melding om det korrekte tallet. Når et spill er over skal programmet spørre bruker om hun vil

fortsette, og i så fall trekke og starte nytt spill.

 

Kan noen det?

 

Dette vitner om en skoleoppgave og jeg kommer ikke til å gi deg hele svaret. Hva med at du starter å skrive et Bash script og spør om hjelp når det er nmoe spesifikk du står fast på? Hvis det ikke er en skoleoppgave må du også gjerne presisere hva du ønsker.

 

For å svare på spørsmålet ditt så kan jeg skrive et script som gjør det du spør om ja.

 

 

#!/bin/bash

 

nr=$[($RANDOM % 100) +1]

echo -n "Jeg tenker på et tall mellom 1 og 100."

while read n2; do

if [[ $n2 -eq $n1 ]]; then

break;

else

echo

if [[ $n2 -gt $n1 ]]; then

echo -n "Sorry, er for høy din gjetning."

elif [[ $n2 -lt $n1 ]]; then

echo -n "Sorry, er for lav din gjetning."

fi

fi

done

echo

Har kommet fram til det, men den er ikke helt riktig, hvordan kan jeg gjøre sånn som akkurat oppgaven beskriver?
Lenke til kommentar

 

 

Skal lage en skall script i Linux.

 

Altså jeg må en script program som:

Programmet trekker et tilfeldig tall mellom 1 og 100, bruker skal gjette tallet iterativt (om igjen) til

suksess. For hver runde skal programmet rapportere om bruker sitt forslag er mindre eller større enn

det korrekte. Om bruker foreslår 0 skal det tolkes som at han/hun gir opp, og spillet avsluttes da

med melding om det korrekte tallet. Når et spill er over skal programmet spørre bruker om hun vil

fortsette, og i så fall trekke og starte nytt spill.

 

Kan noen det?

 

Dette vitner om en skoleoppgave og jeg kommer ikke til å gi deg hele svaret. Hva med at du starter å skrive et Bash script og spør om hjelp når det er nmoe spesifikk du står fast på? Hvis det ikke er en skoleoppgave må du også gjerne presisere hva du ønsker.

 

For å svare på spørsmålet ditt så kan jeg skrive et script som gjør det du spør om ja.

 

 

#!/bin/bash

 

nr=$[($RANDOM % 100) +1]

echo -n "Jeg tenker på et tall mellom 1 og 100."

while read n2; do

if [[ $n2 -eq $n1 ]]; then

break;

else

echo

if [[ $n2 -gt $n1 ]]; then

echo -n "Sorry, er for høy din gjetning."

elif [[ $n2 -lt $n1 ]]; then

echo -n "Sorry, er for lav din gjetning."

fi

fi

done

echo

Har kommet fram til det, men den er ikke helt riktig, hvordan kan jeg gjøre sånn som akkurat oppgaven beskriver?

 

 

Hva er det som ikke fungerer? Jeg ser ihvertfall at du mangler delen som skal spørre brukeren om de vil kjøre en ny runde. Men hva annet er det du spesifikt lurer på?

Lenke til kommentar

 

 

 

Skal lage en skall script i Linux.

 

Altså jeg må en script program som:

Programmet trekker et tilfeldig tall mellom 1 og 100, bruker skal gjette tallet iterativt (om igjen) til

suksess. For hver runde skal programmet rapportere om bruker sitt forslag er mindre eller større enn

det korrekte. Om bruker foreslår 0 skal det tolkes som at han/hun gir opp, og spillet avsluttes da

med melding om det korrekte tallet. Når et spill er over skal programmet spørre bruker om hun vil

fortsette, og i så fall trekke og starte nytt spill.

 

Kan noen det?

 

Dette vitner om en skoleoppgave og jeg kommer ikke til å gi deg hele svaret. Hva med at du starter å skrive et Bash script og spør om hjelp når det er nmoe spesifikk du står fast på? Hvis det ikke er en skoleoppgave må du også gjerne presisere hva du ønsker.

 

For å svare på spørsmålet ditt så kan jeg skrive et script som gjør det du spør om ja.

 

 

#!/bin/bash

 

nr=$[($RANDOM % 100) +1]

echo -n "Jeg tenker på et tall mellom 1 og 100."

while read n2; do

if [[ $n2 -eq $n1 ]]; then

break;

else

echo

if [[ $n2 -gt $n1 ]]; then

echo -n "Sorry, er for høy din gjetning."

elif [[ $n2 -lt $n1 ]]; then

echo -n "Sorry, er for lav din gjetning."

fi

fi

done

echo

Har kommet fram til det, men den er ikke helt riktig, hvordan kan jeg gjøre sånn som akkurat oppgaven beskriver?

 

 

Hva er det som ikke fungerer? Jeg ser ihvertfall at du mangler delen som skal spørre brukeren om de vil kjøre en ny runde. Men hva annet er det du spesifikt lurer på?

 

 

Hvordan får jeg det sånn at den spør brukeren om de vil kjøre en ny runde? Og f.eks, trykke hva for å spille på nytt eller hvordan gjør jeg sånn når man skriver 0 så avslutter man og fortelle hvilken tall det var riktig?

Endret av JDC
Lenke til kommentar

 

 

Hvordan får jeg det sånn at den spør brukeren om de vil kjøre en ny runde? Og f.eks, trykke hva for å spille på nytt eller hvordan gjør jeg sånn når man skriver 0 så avslutter man og fortelle hvilken tall det var riktig?

 

 

Jeg ville løst oppgaven ved å starte med å sette en variabel (ny_runde) og satt den til 1. Så laget en while-løkke hvor du putter koden din inn.

 

Når runden er ferdig spør du brukeren om vedkommende vil spille en ny runde. Hvis input er "Ja" setter du ny_runde til 0. Da vil programmet avsluttes.

 

Tallet du generer har du jo i en variabel $nr så du kan jo printe ut den når som helst. Senere i scriptet referer du til $n1 som jeg ikke forstår hvor du får fra. Mistenker copy/paste feil ;)

Endret av Zyg0te
Lenke til kommentar

 

Du må svare meg da,

 

 

 

 

Hvordan får jeg det sånn at den spør brukeren om de vil kjøre en ny runde? Og f.eks, trykke hva for å spille på nytt eller hvordan gjør jeg sånn når man skriver 0 så avslutter man og fortelle hvilken tall det var riktig?

 

 

Jeg ville løst oppgaven ved å starte med å sette en variabel (ny_runde) og satt den til 1. Så laget en while-løkke hvor du putter koden din inn.

 

Når runden er ferdig spør du brukeren om vedkommende vil spille en ny runde. Hvis input er "Ja" setter du ny_runde til 0. Da vil programmet avsluttes.

 

Tallet du generer har du jo i en variabel $nr så du kan jo printe ut den når som helst. Senere i scriptet referer du til $n1 som jeg ikke forstår hvor du får fra. Mistenker copy/paste feil ;)

 

 

Tar utgangspunkt i den her:

 

#!/bin/bash

INT=$RANDOM

guess=-1

while [ "$guess" != "$INT" ]; do

echo -n "Jeg tenker en nummer mellom 1 og 100. Gjett hvilken nummer det er"

read guess

if [ "$guess" = "" ]; then

echo "Du skrev ingen tall"

elif [ "$guess" = "$INT" ]; then

echo -e "Ja! $guess is the correct answer!"

elif [ "$INT" -gt "$guess" ]; then

echo "Nummeret du gjettet skal være større"

else

echo "Nummeret du gjettet skal være mindre"

fi

done

 

Får ikke den riktig, kan dere hjelpe meg å redigere den?

Skjønner ikke den der while løkke, hvordan skal jeg gjøre det? Trur du kan gjøre mer enn å bare fortelle det, fordi jeg skjønner nesten ingenting av det her

Lenke til kommentar

Jeg liker ikke bash. ;)

#!/usr/bin/python

import random
import math

print "Hello! Welcome to this game!"
while 1:
        print "Drawing a new number!"
        randNum = int(math.floor(100*random.random()) + 1);
        yourNum = -1;

        while yourNum != randNum:
                yourNum = int(input("Enter a number: "))

                if yourNum == 0:
                        print "I do not want to play anymore. :("
                        exit()

                if yourNum != randNum:
                        if yourNum > randNum:
                                print "Too high"
                        else:
                                print "Too low."

        print "Congratulations! The number was " + str(randNum) + "!\n"
Lenke til kommentar

Jeg liker ikke bash. ;)

#!/usr/bin/python

import random
import math

print "Hello! Welcome to this game!"
while 1:
        print "Drawing a new number!"
        randNum = int(math.floor(100*random.random()) + 1);
        yourNum = -1;

        while yourNum != randNum:
                yourNum = int(input("Enter a number: "))

                if yourNum == 0:
                        print "I do not want to play anymore. :("
                        exit()

                if yourNum != randNum:
                        if yourNum > randNum:
                                print "Too high"
                        else:
                                print "Too low."

        print "Congratulations! The number was " + str(randNum) + "!\n"

 

Hva er vitsen med å gi han svaret i Python når det er Bash han sliter med?

 

Slik kan det gjøres.

#!/bin/bash
 cont=1
 while [ $cont -ne 0 ]; do
     #Generate random integer
     INT=$[($RANDOM % 100) +1]
     guess=-1
     echo "Jeg tenker på et tall mellom 1 og 100."
     while [ "$guess" != "$INT" ]; do
         echo -n "Hvilket tall tenker jeg på? "
         read guess
         if [ "$guess" = "" ]; then
             echo "Du skrev ingen tall"
         elif [ "$guess" = "$INT" ]; then
             echo -e "Ja! $guess er riktig"
             echo -n "Vil du spille en runde til? (y/n) "
             read rundetil
             if [ "$rundetil" != "y" ]; then
                 cont=0
             fi
          elif [ "$INT" -gt "$guess" ]; then
             echo "Nummeret du gjettet skal være større"
          else
             echo "Nummeret du gjettet skal være mindre"
          fi
     done
 done
  • Liker 1
Lenke til kommentar

 

Jeg liker ikke bash. ;)

#!/usr/bin/python

import random
import math

print "Hello! Welcome to this game!"
while 1:
        print "Drawing a new number!"
        randNum = int(math.floor(100*random.random()) + 1);
        yourNum = -1;

        while yourNum != randNum:
                yourNum = int(input("Enter a number: "))

                if yourNum == 0:
                        print "I do not want to play anymore. :("
                        exit()

                if yourNum != randNum:
                        if yourNum > randNum:
                                print "Too high"
                        else:
                                print "Too low."

        print "Congratulations! The number was " + str(randNum) + "!\n"

 

Hva er vitsen med å gi han svaret i Python når det er Bash han sliter med?

 

Det er prinisppet programmering han sliter med, ikke språket Bash. Han har heller ikke spesifisert at det må være Bash, og jeg er ikke noen stor fan av Bash. Derfor ga jeg et eksempel i Python. Python er enklere å forstå for en som leser kode for første gang, og er derfor en langt mer pedagogisk måte å lære programmering på.

At skriptet mitt kjører like godt i shell som et hvilket som helst annet Bash-skript er heller ikke noen ulempe. Python er installert omtrent like ofte som Bash i dag.

Lenke til kommentar

Litt greit at du kjenner til hva som er hva før du begynner på slike oppgaver, sånn at du ikke er helt blank. :p

 

Da kan du også stille mer konkrete spørsmål om akkurat det du sliter med, istedenfor ... alt.

 

Tingen er jo at jeg sliter med å forstå hele greia, vanskelig med koding og kodene, vanskelig å huske liksom. Men jeg bruker kun bash script nå, skall script i Linux

Endret av JDC
Lenke til kommentar

 

 

Litt greit at du kjenner til hva som er hva før du begynner på slike oppgaver, sånn at du ikke er helt blank. :p

 

Da kan du også stille mer konkrete spørsmål om akkurat det du sliter med, istedenfor ... alt.

Tingen er jo at jeg sliter med å forstå hele greia, vanskelig med koding og kodene, vanskelig å huske liksom. Men jeg bruker kun bash script nå, skall script i Linux

Du har jo garantert noe pensum som forklarer alt i detalj. Du har jo disket opp med litt kode så jeg anbefaler deg å gå igjennom linje for linje og finn ut av hver linje gjør.

Lenke til kommentar

Tingen er jo at jeg sliter med å forstå hele greia, vanskelig med koding og kodene, vanskelig å huske liksom. Men jeg bruker kun bash script nå, skall script i Linux

 

Hehe, jo, jeg begynner å skjønne det. Men jeg lurer da på hvordan det kan ha seg at du er satt til å gjøre en slik oppgave uten tilstrekkelige forhåndskunnskaper. :)

 

Du må nok pent lære dette fra begynnelsen, hvis det er slik at du mangler det meste av kunnskaper for å kunne gjøre denne oppgaven. Det skulle være plenty av ressurser for dette rundt om på nettet, om du ikke er fornøyd med utdanningsmaterialet du allerede har.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...