sslug-teknik team mailing list archive
-
sslug-teknik team
-
Mailing list archive
-
Message #95894
Re: Shell script større end og mindre ind
On Wed, Jul 30, 2008 at 06:47:00 +0000, mikkel meinike wrote:
> HEJ
> Kan man i et bash shell script lave en conditional expression som i en og
> samme expression tester om en variable er større end og mindre end. F.
> eks. Større end 25 og mindre end 50. Hvis ja er der ikke nogen som vil
> skrive denne test expression for mig så jeg kan få syntaksen.
> Tillægsspørgsmål mest for forståelsens skyld. Jeg har læst om case
> kommandoen i shell script hvor man kan teste f. eks. en variable og så
> have flere forskellige mulige forløb alt afhængigt af hvilket resultat
> testen giver. Jeg tænker om man ikke kunne gøre presist det samme ved at
> have en række "if than fi" efter hinanden. Som tester og har forskellig
> udfald for de forskellige test resultater. Jeg ved ikke om mit spørgsmål
> er til at fatte men hvis der er kunne i måske forklare mig hvorfor man
> evt. ikke skulle kunne gøre det med en række "if than fi" /mikkel
case er mest til match af en eller flere :
eksempel:
case "$var" in
jens) i=10 ;; # match kun jens
lars|bo) i=20;; # match lars eller bo
*) echo "forkert navn"
i=0;;
esac
if er med if, else og elif
Se "man bash" for mere om den shell der hedder "bash"
som oftest anvendes. I Ubuntu og Debian bruges idag
en mindre shell som /bin/sh så dine scripts bør have
første linie som
#!/bin/bash
hvis du anvender konstruktioner der kun findes i bash
og ikke i "sh".
PS.
I forbindelse med expressions (f.eks. i if ) bruges ofte
test som også kan skrives som [ .
Der er en manual side til "test" som er omtrent den der er implementeret
i bash : "man test"
nogle eksempler med "if":
a="to"
b=3
if test "$a" = "to"
then
echo "a er to"
else
echo "a er ikke to"
fi
if [ "$a" = "to" ]
then
...osv...
if [ "$a" = "to" -a $b -ge 3 ]
then
echo "a er to og b => 3"
elif [ "$a" = "to" ]
then
echo "a er to"
elif [ $b -ge 3 ]
then
echo "b >= 3"
else
echo " ;-( "
fi
--
mvh Frank Damgaard |
Follow ups
References