Sida 1 av 1

Hjärnsläpp - enkel if-sats…

Postat: 06 feb 2010, 15:06
av Johnny Rosenberg
Känner mig totalt hjärndöd, men hur använder man "eller" respektive "och" i if-satser i skalskript?

Exempelvis om jag vill uttrycka följande, här i påhittad pseudokod:

Kod: Markera allt

om x = "j" eller x = "J" eller x = "y" eller x = "Y"
gör
   detta
annars
   det här
slut om
Har testat med "or" och även med "||" men de var tydligen fel, båda två.

Re: Hjärnsläpp - enkel if-sats…

Postat: 06 feb 2010, 15:35
av Lars
Alternativ 1:

Kod: Markera allt

if [ "$x" = "j" -o "$x" = "J"  -o "$x" = "y" -o "$x" = "Y" ]; then
    echo ja
else
    echo nej
fi
Alternativ 2:

Kod: Markera allt

case "$x" in
    j|J|x|X)
        echo ja
        ;;
    *)
        echo nej
        ;;
esac

Re: Hjärnsläpp - enkel if-sats…

Postat: 06 feb 2010, 16:27
av Johnny Rosenberg
Lars skrev:Alternativ 1:

Kod: Markera allt

if [ "$x" = "j" -o "$x" = "J"  -o "$x" = "y" -o "$x" = "Y" ]; then
    echo ja
else
    echo nej
fi
Alternativ 2:

Kod: Markera allt

case "$x" in
    j|J|x|X)
        echo ja
        ;;
    *)
        echo nej
        ;;
esac

Det märks att det hör till ovanligheterna att skriva skript för min del… Hade helt glömt bort -o. Tänkte inte på att det helt enkelt är en flagga till "test". Svaret fanns ju därför i manualen till test också (man test).

Tack så mycket för påminnelsen!

En kort följdfråga: Jag använder ju givetvis read för att läsa in användarens svar, vilket ju är ganska enkelt. Tyvärr hamnar markören under frågan och inte direkt till höger om den. Hur fixar man detta till synes enkla problem?

Re: Hjärnsläpp - enkel if-sats…

Postat: 06 feb 2010, 16:50
av andol
Johnny Rosenberg skrev:Alternativ 1:En kort följdfråga: Jag använder ju givetvis read för att läsa in användarens svar, vilket ju är ganska enkelt. Tyvärr hamnar markören under frågan och inte direkt till höger om den. Hur fixar man detta till synes enkla problem?
Nu vet jag förstås inte hur du ställer frågan, men måhända skriver du ut den med echo rakt av? Om man inte anger annat så avslutar nämligen echo med en newline (\n) på slutet. Blir det bättre du explicit skippar den nya raden genom att ange "echo -n" ?

Re: Hjärnsläpp - enkel if-sats…

Postat: 06 feb 2010, 16:53
av Johnny Rosenberg
Du hann före. Skulle just skriva att jag kom på det själv med hjälp av man echo…

Tack ändå.