Hjärnsläpp - enkel if-sats…

Här diskuterar vi skal, kommandon och klassiska linuxverktyg.
Användarvisningsbild
Johnny Rosenberg
Inlägg: 1256
Blev medlem: 23 jun 2007, 16:18
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

Hjärnsläpp - enkel if-sats…

Inlägg 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å.
Vänliga hälsningar

Johnny Rosenberg
ジョニー・ローゼンバーグ

IEEE 1541 - binära prefix
ISO 8601 - datum och tid
Lars
Inlägg: 6191
Blev medlem: 14 jan 2007, 19:31
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Ort: Stockholm

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

Inlägg 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
Användarvisningsbild
Johnny Rosenberg
Inlägg: 1256
Blev medlem: 23 jun 2007, 16:18
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

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

Inlägg 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?
Vänliga hälsningar

Johnny Rosenberg
ジョニー・ローゼンバーグ

IEEE 1541 - binära prefix
ISO 8601 - datum och tid
andol
Inlägg: 3093
Blev medlem: 31 dec 2007, 00:19
OS: Ubuntu
Utgåva: 23.10 Mantic Minotaur

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

Inlägg 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" ?
Användarvisningsbild
Johnny Rosenberg
Inlägg: 1256
Blev medlem: 23 jun 2007, 16:18
OS: Ubuntu
Utgåva: 22.10 Kinetic Kudu
Kontakt:

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

Inlägg 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å.
Vänliga hälsningar

Johnny Rosenberg
ジョニー・ローゼンバーグ

IEEE 1541 - binära prefix
ISO 8601 - datum och tid
Skriv svar

Återgå till "Terminalforum"