Bash if-sats? Resurskrävande?
Postat: 01 mar 2008, 18:12
Har gjortt ett script som skall söka ut engelska termer och ersätta dem med svenska:
if [ "$WINDD" = "S (" ]; then
vindriktning="Sydlig vind";
elif [ "$WINDD" = "W (" ]; then
vindriktning="Västlig vind";
elif [ "$WINDD" = "SSW" ]; then
vindriktning="SydSydVäst";
elif [ "$WINDD" = "WSW" ]; then
vindriktning="VästSydVäst";
elif [ "$WINDD" = "WNW" ]; then
vindriktning="VästNordVäst";
elif [ "$WINDD" = "NWN" ]; then
vindriktning="NordNordVäst";
elif [ "$WINDD" = "N (" ]; then
vindriktning="Nordlig";
elif [ "$WINDD" = "NW " ]; then
vindriktning="NordVästlig";
elif [ "$WINDD" = "NNE" ]; then
vindriktning="NordNordÖst";
elif [ "$WINDD" = "NE " ]; then
vindriktning="NordÖstlig";
elif [ "$WINDD" = "ENE" ]; then
vindriktning="ÖstNordÖst";
elif [ "$WINDD" = "E (" ]; then
vindriktning="Östlig";
elif [ "$WINDD" = "ESE" ]; then
vindriktning="ÖstSydÖst";
elif [ "$WINDD" = "SE " ]; then
vindriktning="SydÖstlig";
elif [ "$WINDD" = "SSE" ]; then
vindriktning="SydSydÖst";
else
vindriktning="SydVäst";
fi
Koden funkar fint men verkar vara resusrsrävande. Finns det nåt bättre sätt typ 'case' eller nåt, för att göra samma sak snabbare?
En fråga till; det lär gå att söka ut delar av en sträng och byta ut dem typ;
STRING='min sträng'
MATCH='sträng'
REPLACE='ersättning eller vad som helst'
NEWSTRING=${STRING/MATCH/REPLACE}
men jag har inte fått dett funka. Jag har prövat "STRING", 'STRING' m m.
Har dock fått ${STRING:3:5} att söka ut de tecknen 3-5 i min sträng, men är inte samma sak.
Tacksam för hjälp!
if [ "$WINDD" = "S (" ]; then
vindriktning="Sydlig vind";
elif [ "$WINDD" = "W (" ]; then
vindriktning="Västlig vind";
elif [ "$WINDD" = "SSW" ]; then
vindriktning="SydSydVäst";
elif [ "$WINDD" = "WSW" ]; then
vindriktning="VästSydVäst";
elif [ "$WINDD" = "WNW" ]; then
vindriktning="VästNordVäst";
elif [ "$WINDD" = "NWN" ]; then
vindriktning="NordNordVäst";
elif [ "$WINDD" = "N (" ]; then
vindriktning="Nordlig";
elif [ "$WINDD" = "NW " ]; then
vindriktning="NordVästlig";
elif [ "$WINDD" = "NNE" ]; then
vindriktning="NordNordÖst";
elif [ "$WINDD" = "NE " ]; then
vindriktning="NordÖstlig";
elif [ "$WINDD" = "ENE" ]; then
vindriktning="ÖstNordÖst";
elif [ "$WINDD" = "E (" ]; then
vindriktning="Östlig";
elif [ "$WINDD" = "ESE" ]; then
vindriktning="ÖstSydÖst";
elif [ "$WINDD" = "SE " ]; then
vindriktning="SydÖstlig";
elif [ "$WINDD" = "SSE" ]; then
vindriktning="SydSydÖst";
else
vindriktning="SydVäst";
fi
Koden funkar fint men verkar vara resusrsrävande. Finns det nåt bättre sätt typ 'case' eller nåt, för att göra samma sak snabbare?
En fråga till; det lär gå att söka ut delar av en sträng och byta ut dem typ;
STRING='min sträng'
MATCH='sträng'
REPLACE='ersättning eller vad som helst'
NEWSTRING=${STRING/MATCH/REPLACE}
men jag har inte fått dett funka. Jag har prövat "STRING", 'STRING' m m.
Har dock fått ${STRING:3:5} att söka ut de tecknen 3-5 i min sträng, men är inte samma sak.
Tacksam för hjälp!