rilpoint_mw113

Linux:Elágazások

(Változatok közti eltérés)
Admin (vitalap | szerkesztései)
(Új oldal, tartalma: „=Elágazások= * Készíts programot, mely egy futásidőben bekért számról eldönti, hogy nagyobb-e, mint 5! <code lang="bash"> #!/bin/bash echo -n "Add meg a vizsgá…”)
Újabb szerkesztés →

A lap 2010. március 28., 19:09-kori változata

Elágazások

  • Készíts programot, mely egy futásidőben bekért számról eldönti, hogy nagyobb-e, mint 5!
#!/bin/bash
echo -n "Add meg a vizsgálandó számot!"
read SZAM
if [ "$SZAM" -gt 5 ] ; then
  echo "A $SZAM nagyobb, mint 5"
else
  echo "A $SZAM kisebb, mint 5"
fi
  • Készítsünk olyan programot, amely bekér két számot, és kiírja a nagyobbikat a képernyőre. Ha a két szám egyenlő, azt is kijelzi.
#!/bin/bash
# Készítette: Magyar Péter
echo -n "Add meg az első számot!"
read SZAM1
echo -n "Add meg a második számot!"
read SZAM2
if [ "$SZAM1" -gt "$SZAM2" ] ; then
  echo "A(z) $SZAM1 nagyobb, mint a(z) $SZAM2."
else
  if [ "$SZAM2" -gt "$SZAM1" ] ; then
    echo "A(z) $SZAM2 nagyobb, mint a(z) $SZAM1."
  else
    echo "A két szám egyenlő."
  fi
fi
  • Egészítsük ki az előző feladatot azzal, hogy a futás során történt eseményekről részletes naplóbejegyzést készítünk a "~/naplo.log" file-ba oly módon, hogy minden futás önálló tartalmat generáljon, felülírva a korábbi naplózási eredményeket.
#!/bin/bash
# Készítette: Magyar Péter
echo "Naplózás indul!" > ~/naplo.log
echo -n "Kérem az első számot!"
read A
echo "Az első szám = $A" >> ~/naplo.log
echo -n "Kérem a második számot!"
read B
echo "A második szám = $B" >> ~/naplo.log
if [ "$A" -gt "$B" ] ; then
  echo "A(z) $A nagyobb, mint a(z) $B."
  echo "A(z) $A nagyobb, mint a(z) $B." >> ~/naplo.log
else
  if [ "$B" -gt "$A" ] ; then
    echo "A(z) $B nagyobb, mint a(z) $A."
    echo "A(z) $B nagyobb, mint a(z) $A." >> ~/naplo.log
  else
    echo "A két szám egyenlő."
    echo "A két szám egyenlő." >> ~/naplo.log
  fi
fi
echo "Naplózás vége." >> ~/naplo.log
  • Módosítsuk a naplózási stratégiát, hogy ugyanabba a file-ba növekményesen naplózódjanak az eredmények. Ekkor a futás elején írjuk bele a napófileba az aktuális dátumot és időt, majd a futási log bejegyzéseket.
#!/bin/bash
# Készítette: Magyar Péter
date >> ~/naplo.log
echo "Naplózás indul!" >> ~/naplo.log
echo -n "Kérem az első számot!"
read A
echo "Az első szám = $A" >> ~/naplo.log
echo -n "Kérem a második számot!"
read B
echo "A második szám = $B" >> ~/naplo.log
if [ "$A" -gt "$B" ] ; then
  echo "A(z) $A nagyobb, mint a(z) $B."
  echo "A(z) $A nagyobb, mint a(z) $B." >> ~/naplo.log
else
  if [ "$B" -gt "$A" ] ; then
    echo "A(z) $B nagyobb, mint a(z) $A."
    echo "A(z) $B nagyobb, mint a(z) $A." >> ~/naplo.log
  else
    echo "A két szám egyenlő."
    echo "A két szám egyenlő." >> ~/naplo.log
  fi
fi
echo "Naplózás vége." >> ~/naplo.log
echo "-----------------------------------------" >> ~/naplo.log
  • Oldjuk meg, hogy a script induláskor ellenőrízze le, hogy a naplófile hossza meghaladja-e a 1 megabyte-ot. Amennyiben igen, úgy a naplófile-ról készítsen másolatot naplo.old néven, majd hozzon létre egy üres naplófilet, és folytassa a futást.
#!/bin/bash
# Készítette: Magyar Péter & Kis Balázs
 
MERET=`ls -l ~/naplo.log | cut -d" " -f5`
if [ "$MERET" -gt 1024 ] ; then
  mv ~/naplo.log ~/naplo.old
fi
date >> ~/naplo.log
echo "Naplózás indul!" >> ~/naplo.log
echo -n "Kérem az első számot!"
read A
echo "Az első szám = $A" >> ~/naplo.log
echo -n "Kérem a második számot!"
read B
echo "A második szám = $B" >> ~/naplo.log
if [ "$A" -gt "$B" ] ; then
  echo "A(z) $A nagyobb, mint a(z) $B."
  echo "A(z) $A nagyobb, mint a(z) $B." >> ~/naplo.log
else
  if [ "$B" -gt "$A" ] ; then
    echo "A(z) $B nagyobb, mint a(z) $A."
    echo "A(z) $B nagyobb, mint a(z) $A." >> ~/naplo.log
  else
    echo "A két szám egyenlő."
    echo "A két szám egyenlő." >> ~/naplo.log
  fi
fi
echo "Naplózás vége." >> ~/naplo.log
echo "-----------------------------------------" >> ~/naplo.log
  • Készíts programot, mely megjeleníti a ~/testfile fájl tartalmát. Ha a fájl nem létezik, akkor létrehozza azt, és beleírja a programot futtató felhasználó nevét (ezt a shell a $USER változóban teszi elérhetővé).
#!/bin/bash
TESTFILE="/tmp/testfile.txt"
if [ -f $TESTFILE ]; then
  echo "A $TESTFILE már létezik, a tartalma a következő:"
  cat $TESTFILE
else
  echo "$TESTFILE létrehozása."
  echo $USER >$TESTFILE
fi
  • Készíts programot, mely bekéri egy hét napjának sorszámát, és kiírja az ahhoz tartozó nap nevét!
#!/bin/bash
echo -n "Nap sorszáma: "
read N
case $N in
  1) echo "Hétfo" ;;
  2) echo "Kedd" ;;
  3) echo "Szerda" ;;
  4) echo "Csütörtök" ;;
  5) echo "Péntek" ;;
  6) echo "Szombat" ;;
  7) echo "Vasárnap" ;;
  *) echo "Nincs ilyen nap." ;;
esac
  • Készíts programot, mely bekéri egy téglalap oldalainak nagyságát, és kiírja annak területét. A programnak ellenőriznie kell, hogy a megadott oldal hosszak nagyobbak-e 0-nál.
#!/bin/bash
echo -n "A oldal: "
read A
echo -n "B oldal: "
read B
# Ha A és B is pozitív egész
if [ "$A" -gt 0 -a "$B" -gt 0 ]
then
  echo "Terület: " ` expr $A \* $B ` "."
else
  echo "Érvénytelen adatok"
fi
  • Készíts programot, mely ellenőrzi, hogy azt a root felhasználó futtatja-e, ha nem, akkor adjon hibaüzenetet!
#!/bin/bash
if [ $USER != "root" ] ; then
  echo "Ön nem rendszergazda."
  exit
fi
echo "Ön rendszergazda."
  • Készíts programot, mely az aktuális idő alapján kiírja, hogy mi a napszaknak megfelelően köszönés!
#!/bin/bash
ORA=`date '+%H'`
N="ejszakat"
if [ $ORA -ge 5 -a $ORA -le 8 ] ; then
  N="reggelt"
fi
if [ $ORA -ge 9 -a $ORA -le 18 ] ; then
  N="napot"
fi
if [ $ORA -ge 18 -a $ORA -le 22 ] ; then
  N="estet"
fi
echo "[$ORA óra van]: Jó $N kívánok."
  • Készíts programot, mely bekéri egy felhasználó login nevét, és a /etc/passwd file-ból kikeresi annak teljes nevét! A program ellenőrizze, hogy a felhasználó valóban adott-e keresendő nevet, és adjon értelmes választ akkor is, ha a keresett felhasználó nincs a rendszerben!
#!/bin/bash
echo -n "Login név: "
read NAME
if [ -z "$NAME" ] ; then 
  echo "Meg kell adnia a nevet."
  exit
fi
FULLNAME=`cat /etc/passwd | grep ^$NAME: | cut -d: -f5`
if [ ! -z "$FULLNAME" ] ; then
  echo "Teljes név: $FULLNAME"
else
  echo "Nincs $NAME felhasználó a rendszerben."
fi

Hibakezelés

  • Készíts programot, mely létrehozza a /tmp/testDir nevű könyvtárat! Az esetleges hibaüzenetek ne jelenjenek meg, de ha a könyvtár létrehozása sikertelen, akkor írjunk ki saját hibaüzenetet!
#!/bin/bash
# A hibákat átirányítjuk a /dev/null-ba
mkdir /etc/alma 2>/dev/null
# Az ERR változóba kerül a parancs által adott visszatérési érték
ERR=$?
if [ $ERR -ne 0 ] ; then
  echo "Hiba a könyvtár létrehozásakor: $ERR"
fi
Skin by RIL Partner