Kihagyás

7. gyakorlat

test

test <kifejezés>
#vagy
[ kifejezés ]
  • Az eredményt a $? változóba helyezi

1 -> Hamis

0 -> Igaz

test 6 -lt 10
echo $?
>> 0

Számok összehaonlítása:

  • -lt -> Kisebb (lower than)
  • gt -> Nagyobb(greater than)
  • -le -> Kisebb vagy egyenlő (less or equal)
  • -ge -> Nagyobb vagy egyenlő (greater or equal)
  • -eq -> Egyenlő (equal)
  • -ne -> Nem egyenlő (not equal)

Szövegek összehasonlítás

  • kif1 = kif2 -> megegyező
  • kif1 != kif2 -> eltér
  • -n - nem üres (nem 0 hosszúságú)
  • -z - üres

Összetett kifejezések

  • -o - or
  • -a - and
  • ! kif - tagadás

Példa

test 3 -eq 2 -o 3 -ge 1 - 3 egyenlő 2-vel VAGY 3 nagyobb, vagy egyenlő, mint 1

Elágazások

if

if [ logikai érték ] 
    then 
    parancs
elif [ logikai érték ]
    then
    parancs
else 
    parancs
fi

Példa: tiz.sh

#!/bin/sh

echo -n "Kérek egy számot: "
read num

if [ $num -eq 10 ]
then
    echo A szám egyenlő 10-zel
elif [ $num -lt 10 ]
then
    echo A szám kisebb mint 10
else
    echo A szám nagyobb mint 10
fi

case

case value in

value1)
;;
value2)

;;
*)

;;
esac

Példa: futtat.sh

#!/bin/sh

param=$1

case $param in
  "-d")
    date
  ;;
  "-w")
    who
  ;;
  "-l")
    ls
  ;;
  *)
    echo Paraméterek:
    echo "-d: date"
    echo "-w: who"
    echo "-l: ls"
  ;;
esac

Kotlin alternatíva
#!/bin/sh
if [ $# -eq 0 ]
then
    echo -e "Paraméterek:\n-d: date\n-w who\n-l: ls"
    exit
fi
for i in $*
do
    case $i in
        "-l")
        echo `ls`
        ;;
        "-w")
        who
        ;;
        "-d")
        echo `date`
        ;;
    esac
done

Ciklusok

for (Húzd végig az ujjad)

for var in list
do
    echo "amongus"
done

Példa: for_5.sh

#!/bin/sh
for i in 1 2 3 4 5
do
    echo $i Hajrá Magyarok!
done

Példa: for_n.sh

#!/bin/sh
for i in `seq 1 $1`
do
    echo $i Hajrá Magyarok!
done

Példa: for_who.sh

#!/bin/sh

for user in `who | cut -d ' ' -f 1 | sort -u`
do
 echo "$user bejelentkezett"
done

while

while logikai_érték
do
# ciklusmag
done

Példa: while_5.sh

#!/bin/sh
i=0
while [ $i -lt 5 ]
do
echo "Hajrá magyarok!"
i=`expr $i + 1`
done

Példa: while_osszead.sh

#!/bin/sh
i=1
acc=0
while [ $i -le 5 ]
do
    echo -n "Kérem az $i. számot: "
    read num
    acc=`expr $acc + $num`
    i=`expr $i + 1`
done
echo A beírt számok összege: $acc

until

until logikai_érték
do
# ciklusmag
done