Sida 3 av 3

SV: Hjälp med Bash

Postat: 19 maj 2007, 10:54
av Magnuntu
Tack för det :) Det gjorde susen!

Hjälp igen tack

Postat: 04 jul 2007, 18:16
av Magnuntu
Jag fortsätter här i min egen tråd...

Finns det något sätt att rensa ut en funktion och starta om på nytt? Om jag t.ex. har:

Kod: Markera allt

function favoritfrukt {
    echo "Vilken är din favoritfrukt?"
    read frukt;
    if [ "${frukt}" = "banan" ]; then
        echo "Vi lever inte i ett fritt land. Ändra genast din favoritfrukt!"
        RESTART_FUNCTION; # Här skulle jag vilja ha något...
    fi
    echo  "Tack för att du talar om vilken din favoritfrukt är. Och vilken tur att det inte är banan!"
}
Jag vet att detta (nedan) skulle fungera, men det kommer att ge den sista meningen flera gånger...

Kod: Markera allt

function favoritfrukt {
    echo "Vilken är din favoritfrukt?"
    read frukt;
    if [ "${frukt}" = "banan" ]; then
        echo "Vi lever inte i ett fritt land. Ändra genast din favoritfrukt!"
        favoritfrukt;
    fi
    echo  "Tack för att du talar om vilken din favoritfrukt är. Och vilken tur att det inte är banan!"
}
Finns det något? Kanske iaf stoppa resten av funktionen med exit eller något?

SV: Hjälp med Bash

Postat: 04 jul 2007, 19:07
av Barre

Kod: Markera allt

eftersom du ropar på funktionen "favoritfrukt" varje gång du svarar banan och när du tillslut svarar något annat så kommer den passera raden echo  "Tack för att du talar om vilken din favoritfrukt är. Och vilken tur att det inte är banan!" och skriva ut den raden oavsätt om du svarade banan eller inte..
function favoritfrukt {
    echo "Vilken är din favoritfrukt?"
    read frukt;
    if [ "${frukt}" = "banan" ]; then
        echo "Vi lever inte i ett fritt land. Ändra genast din favoritfrukt!"
        favoritfrukt;
    else
        echo  "Tack för att du talar om vilken din favoritfrukt är. Och vilken tur att det inte är banan!"
    fi
}


SV: Hjälp med Bash

Postat: 04 jul 2007, 19:13
av nicefinger
while ... do
Eller?

SV: Hjälp med Bash

Postat: 04 jul 2007, 19:29
av Barre
nicefinger skrev: while ... do
Eller?
Ett mycket bättre alternativ :)
Jag försökte bara förklara varför det skrevs ut flera gånger ....

SV: Hjälp med Bash

Postat: 04 jul 2007, 21:56
av Magnuntu
Tack för det :) Tänkte inte i de banorna alls, så tack!

Angående while och do... Jag har använt while en hel del i PHP, men jag har aldrig riktigt fått kläm på do. Ska kolla upp det. Allting är ju så annorlunda i bash också  :-\

SV: Hjälp med Bash

Postat: 04 jul 2007, 22:07
av Barre
Jo... det skulle kunna se ut så här:

Kod: Markera allt

function favoritfrukt {
    frukt="banan"
    while [ "${frukt}" = "banan" ]; do
        echo "Vilken är din favoritfrukt?"
        read frukt;
    done
    echo  "Tack för att du talar om vilken din favoritfrukt är. Och vilken tur att det inte är banan!"
}
när funktionen anropas så sätts $frukt till banan
sen upprepas allt mellan do & done så länge $frukt = banan.

SV: Hjälp med Bash

Postat: 05 jul 2007, 13:33
av Magnuntu
Tack, nu försår jag. Det var lättare än vad jag hade förstått det :)

SV: Hjälp med Bash

Postat: 05 jul 2007, 13:48
av nicefinger
Eller såhär

Kod: Markera allt

function favoritfrukt {
    frukt="banan"
    while [ "${frukt}" = "banan" ]; do
        echo "Vilken är din favoritfrukt?"
        read frukt;
	if [ "${frukt}" = "banan" ]; then
       	 	echo "Vi lever inte i ett fritt land. Ändra genast din favoritfrukt!"
       	fi
    done
    echo  "Tack för att du talar om vilken din favoritfrukt är. Och vilken tur att det inte är banan!"
}

SV: Hjälp med Bash

Postat: 05 jul 2007, 13:50
av Barre
nicefinger skrev: Eller såhär

Kod: Markera allt

.....
	if [ "${frukt}" = "banan" ]; then
       	 	echo "Vi lever inte i ett fritt land. Ändra genast din favoritfrukt!"
       	fi
.....
ooops... missade det stycket ;D

SV: Hjälp med Bash

Postat: 05 jul 2007, 14:07
av Konservburk
Eller om man inte vill testa samma sak på två ställen
och vill slippa att sätta $frukt till banan från början:

Kod: Markera allt

favoritfrukt() {
   while
      echo 'Vilken är din favoritfrukt?'
      read frukt
      test banan = "$frukt"
   do
      echo 'Vi lever inte i ett fritt land. Ändra genast din favoritfrukt!'
   done
   echo  'Tack för att du talar om vilken din favoritfrukt är. Och vilken tur att det inte är banan!'
}