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å.