1. UNIX shellaries.ektf.hu/~serial/kiralyroland/download/szkript.pdf · 2012. 1. 25. ·...
Transcript of 1. UNIX shellaries.ektf.hu/~serial/kiralyroland/download/szkript.pdf · 2012. 1. 25. ·...
![Page 1: 1. UNIX shellaries.ektf.hu/~serial/kiralyroland/download/szkript.pdf · 2012. 1. 25. · Parancsértelmez shellscriptneve ... Ebben az esetben a szkript tartalmazza a parancsértelmez](https://reader035.fdocuments.us/reader035/viewer/2022071516/6138de350ad5d206764986e8/html5/thumbnails/1.jpg)
Szkriptnyelvek
1. UNIX shell
![Page 2: 1. UNIX shellaries.ektf.hu/~serial/kiralyroland/download/szkript.pdf · 2012. 1. 25. · Parancsértelmez shellscriptneve ... Ebben az esetben a szkript tartalmazza a parancsértelmez](https://reader035.fdocuments.us/reader035/viewer/2022071516/6138de350ad5d206764986e8/html5/thumbnails/2.jpg)
Szkriptek futtatása
● Parancsértelmez shellscriptneve őparaméterek
● shellscriptneve paraméterekEbben az esetben a szkript tartalmazza a parancsértelmez t:ő
#!/bin/bash
![Page 3: 1. UNIX shellaries.ektf.hu/~serial/kiralyroland/download/szkript.pdf · 2012. 1. 25. · Parancsértelmez shellscriptneve ... Ebben az esetben a szkript tartalmazza a parancsértelmez](https://reader035.fdocuments.us/reader035/viewer/2022071516/6138de350ad5d206764986e8/html5/thumbnails/3.jpg)
Szkriptek futtatása
> sh osszeg.sh 2 3
> 2 + 3 = 5
> ./osszeg 2 3
> 2 + 3 = 5
A program kódjában az els sor a #! őkarakterekkel kezd dik, ezután áll a őparancsértelmez elérési úttal. p.: ő/bin/sh
![Page 4: 1. UNIX shellaries.ektf.hu/~serial/kiralyroland/download/szkript.pdf · 2012. 1. 25. · Parancsértelmez shellscriptneve ... Ebben az esetben a szkript tartalmazza a parancsértelmez](https://reader035.fdocuments.us/reader035/viewer/2022071516/6138de350ad5d206764986e8/html5/thumbnails/4.jpg)
JogokA futtatás elengedhetetlen feltétele a futtatási jog. A jogokat a chmod parancs segítségével állítjuk be.
> chmod jogok fileneve
> chmod 700 osszeg.sh
A 700 jog azt jelenti, hogy a tulajdonos minden jogosultsággal rendelkezik (rwx) a csoprtnak és a világnak egyáltalán nincs joga a fájlhoz.
![Page 5: 1. UNIX shellaries.ektf.hu/~serial/kiralyroland/download/szkript.pdf · 2012. 1. 25. · Parancsértelmez shellscriptneve ... Ebben az esetben a szkript tartalmazza a parancsértelmez](https://reader035.fdocuments.us/reader035/viewer/2022071516/6138de350ad5d206764986e8/html5/thumbnails/5.jpg)
Jogok R = 4
W = 2
X = 1
A fentiek alapján a 754 jog pl. azt jelenti, hogy a tulajdonos irási, olvasási és futtatási, a csoport olvasási és futtatási, a világ csak olvasási jogokkal rendelkezik.
A jogok érvényesítése: chmod 754
![Page 6: 1. UNIX shellaries.ektf.hu/~serial/kiralyroland/download/szkript.pdf · 2012. 1. 25. · Parancsértelmez shellscriptneve ... Ebben az esetben a szkript tartalmazza a parancsértelmez](https://reader035.fdocuments.us/reader035/viewer/2022071516/6138de350ad5d206764986e8/html5/thumbnails/6.jpg)
A Shell szkript “belülr l”ő
UNIX parancsok mindegyike (ls,echo,...)
bels shell parancsok (...)ő
beépített változók ($#,$1,...)
definiált változók (A=2,B=5)
Operátorok (==,eq,gt,...)
Függvények (...)
Küls programokő
![Page 7: 1. UNIX shellaries.ektf.hu/~serial/kiralyroland/download/szkript.pdf · 2012. 1. 25. · Parancsértelmez shellscriptneve ... Ebben az esetben a szkript tartalmazza a parancsértelmez](https://reader035.fdocuments.us/reader035/viewer/2022071516/6138de350ad5d206764986e8/html5/thumbnails/7.jpg)
Változók
SZOVEG = “szöveg szöveg”
ERTEK = 10
A = ERTEK + SZOVEG
VAR1 = “az eredmény = $A”
Echo $VAR1
FIGYELEM: “echo A” hibás, ebben az esetben a rendszer az At nem változónak kezeli, mivel nem írtunk elé $jelet.
A helyes eljárás, ha értékadásnál nem, minden más esetben használjuk a $jelet.
![Page 8: 1. UNIX shellaries.ektf.hu/~serial/kiralyroland/download/szkript.pdf · 2012. 1. 25. · Parancsértelmez shellscriptneve ... Ebben az esetben a szkript tartalmazza a parancsértelmez](https://reader035.fdocuments.us/reader035/viewer/2022071516/6138de350ad5d206764986e8/html5/thumbnails/8.jpg)
Parancssori paraméterek
A parancssori paramétereket szóközzel elválasztva adjuk meg.
Ha a paraméter maga is tartalmaz szóközt, akkor azt idéz jelek közé őtesszük.
A paraméterekre hivatkozhatunk $i szimbólummal, ahol az i a paraméter sorszáma. A $0 paraméter a program neve. pl.: teszt.sh esetén a $0 = teszt.sh
![Page 9: 1. UNIX shellaries.ektf.hu/~serial/kiralyroland/download/szkript.pdf · 2012. 1. 25. · Parancsértelmez shellscriptneve ... Ebben az esetben a szkript tartalmazza a parancsértelmez](https://reader035.fdocuments.us/reader035/viewer/2022071516/6138de350ad5d206764986e8/html5/thumbnails/9.jpg)
Parancssori paraméterek
$# Az argumentumok száma (parancssori paraméterek)
$ A szkriptet végrehajtó shellnek átadott opciók
$? A legutolsó parancs visszatérési értéke
$$ A futó szkript processzeinek száma
$! A háttérben utoljára végrehajtott parancs processzeinek száma
$n az nedik argumentum értéke (max. 9 lehetséges, ezután shift)
![Page 10: 1. UNIX shellaries.ektf.hu/~serial/kiralyroland/download/szkript.pdf · 2012. 1. 25. · Parancsértelmez shellscriptneve ... Ebben az esetben a szkript tartalmazza a parancsértelmez](https://reader035.fdocuments.us/reader035/viewer/2022071516/6138de350ad5d206764986e8/html5/thumbnails/10.jpg)
Parancssori paraméterek
$0 Az aktuális shell, vagy program neve
$* Az összes argumentum egyben ($1,$2,..,$n; n max. 9 lehet)
$@ Az összes parancssori argumentum egyben, de az el z t l annyiban ő ő őkülönbözik, hogy itt az argumentumok egyesével, idéz jelben vannak.ő
![Page 11: 1. UNIX shellaries.ektf.hu/~serial/kiralyroland/download/szkript.pdf · 2012. 1. 25. · Parancsértelmez shellscriptneve ... Ebben az esetben a szkript tartalmazza a parancsértelmez](https://reader035.fdocuments.us/reader035/viewer/2022071516/6138de350ad5d206764986e8/html5/thumbnails/11.jpg)
Shell bels változóiő
HOME a felhasználó home könyvtára
LANG nyelvi beállítás, pl.: hu
MAIL a beérkez levelek helye, pl.: ő/var/spool/mail
IFS azon karakterek listája, melyet a shell szeparátorként értelmez
SHACCT ha van értéke, ebbe a fájlba ír egy üzenetet a shell minden program végrehajtásakor
![Page 12: 1. UNIX shellaries.ektf.hu/~serial/kiralyroland/download/szkript.pdf · 2012. 1. 25. · Parancsértelmez shellscriptneve ... Ebben az esetben a szkript tartalmazza a parancsértelmez](https://reader035.fdocuments.us/reader035/viewer/2022071516/6138de350ad5d206764986e8/html5/thumbnails/12.jpg)
Operátorok
Op1 eq Op2: ==
Op1 ne Op2: !=
Op1 gt Op2: >
Op1 ge Op2: >=
Op1 lt Op2: <
Op1 le Op2: <=
pl.: if ( $V1 ne $V2) ...
![Page 13: 1. UNIX shellaries.ektf.hu/~serial/kiralyroland/download/szkript.pdf · 2012. 1. 25. · Parancsértelmez shellscriptneve ... Ebben az esetben a szkript tartalmazza a parancsértelmez](https://reader035.fdocuments.us/reader035/viewer/2022071516/6138de350ad5d206764986e8/html5/thumbnails/13.jpg)
Idéz jelek használataő
'...' Teljes elzárás, nincs változó kiértékelés
“...” A shell behelyettesíti a számára értelmezhet változókat, paramétereket, őde egyben tartja a “szöveget”pl.: A = 2; B = 3; echo “$A + $B és 2” esetén az eredmény: 2 + 3 és 2, míg echo '$A + $B és 2' esetén az eredmény: $A + $B és 2
Kifejezéseket egyik esetben sem értékel ki!
![Page 14: 1. UNIX shellaries.ektf.hu/~serial/kiralyroland/download/szkript.pdf · 2012. 1. 25. · Parancsértelmez shellscriptneve ... Ebben az esetben a szkript tartalmazza a parancsértelmez](https://reader035.fdocuments.us/reader035/viewer/2022071516/6138de350ad5d206764986e8/html5/thumbnails/14.jpg)
Programok szervezése
Feltételes utasítások, elágazások
if
test
&&
||
“függvények”
![Page 15: 1. UNIX shellaries.ektf.hu/~serial/kiralyroland/download/szkript.pdf · 2012. 1. 25. · Parancsértelmez shellscriptneve ... Ebben az esetben a szkript tartalmazza a parancsértelmez](https://reader035.fdocuments.us/reader035/viewer/2022071516/6138de350ad5d206764986e8/html5/thumbnails/15.jpg)
Feltételes elágazások
Kifejezés && ut1 || ut2
A kifejezés egy, vagy több m velet. Ha a űvégrehajtás sikeres, akkor ut1 fut, ha nem akkor ut2.
Pl.: ls /bin && echo “ok” || echo “no”
![Page 16: 1. UNIX shellaries.ektf.hu/~serial/kiralyroland/download/szkript.pdf · 2012. 1. 25. · Parancsértelmez shellscriptneve ... Ebben az esetben a szkript tartalmazza a parancsértelmez](https://reader035.fdocuments.us/reader035/viewer/2022071516/6138de350ad5d206764986e8/html5/thumbnails/16.jpg)
Teszt
Test logikaikifejezés
[logikaikifejezés]
true, vagy false értékkel tér vissza
shell szkriptekben alkalmazható
![Page 17: 1. UNIX shellaries.ektf.hu/~serial/kiralyroland/download/szkript.pdf · 2012. 1. 25. · Parancsértelmez shellscriptneve ... Ebben az esetben a szkript tartalmazza a parancsértelmez](https://reader035.fdocuments.us/reader035/viewer/2022071516/6138de350ad5d206764986e8/html5/thumbnails/17.jpg)
Feltételes elágazások
If [ Kifejezés1 ]
then
utasítások
elif [ kifejezés2 ]
then
utasítások
else
utasítások
fi
![Page 18: 1. UNIX shellaries.ektf.hu/~serial/kiralyroland/download/szkript.pdf · 2012. 1. 25. · Parancsértelmez shellscriptneve ... Ebben az esetben a szkript tartalmazza a parancsértelmez](https://reader035.fdocuments.us/reader035/viewer/2022071516/6138de350ad5d206764986e8/html5/thumbnails/18.jpg)
Feltételek kiértékelése
A shell a kifejezés1et értékeli ki, ha igaznak találja, akkor végrehajtja az utasításait
Az elif ágakat az ifthen ág után értékeli ki, majd az els “találat” őutasításait hajtja végre.
Ha nem teljesül egyik kifejezés sem, akkor az else ág hajtódik végre.
Elif ágból lehet több is.
![Page 19: 1. UNIX shellaries.ektf.hu/~serial/kiralyroland/download/szkript.pdf · 2012. 1. 25. · Parancsértelmez shellscriptneve ... Ebben az esetben a szkript tartalmazza a parancsértelmez](https://reader035.fdocuments.us/reader035/viewer/2022071516/6138de350ad5d206764986e8/html5/thumbnails/19.jpg)
Case elágazás
case string0 in
string1) utasítások;;
string2) utasítások;;
*) utasítások;;
esac
A string0 lehet szabályos kifejezés is. Ha nincs találat, akkor a * ág fut, ha nincs ilyen, akor átugorjuk a teljes case kifejezést.
![Page 20: 1. UNIX shellaries.ektf.hu/~serial/kiralyroland/download/szkript.pdf · 2012. 1. 25. · Parancsértelmez shellscriptneve ... Ebben az esetben a szkript tartalmazza a parancsértelmez](https://reader035.fdocuments.us/reader035/viewer/2022071516/6138de350ad5d206764986e8/html5/thumbnails/20.jpg)
Ciklusok (for)
for ciklusváltozó in lista
do
utasítások
done;
A ciklusváltozó felveszi a lista értékeit.
for I in *.dat
do
echo $I
done;
![Page 21: 1. UNIX shellaries.ektf.hu/~serial/kiralyroland/download/szkript.pdf · 2012. 1. 25. · Parancsértelmez shellscriptneve ... Ebben az esetben a szkript tartalmazza a parancsértelmez](https://reader035.fdocuments.us/reader035/viewer/2022071516/6138de350ad5d206764986e8/html5/thumbnails/21.jpg)
Ciklusok (while)
While [kifejezés]
do
utasítások
done;
A ciklus addig fut, míg a feltétele igaz.
While [ $A gt 1]
do
echo $A
done;
![Page 22: 1. UNIX shellaries.ektf.hu/~serial/kiralyroland/download/szkript.pdf · 2012. 1. 25. · Parancsértelmez shellscriptneve ... Ebben az esetben a szkript tartalmazza a parancsértelmez](https://reader035.fdocuments.us/reader035/viewer/2022071516/6138de350ad5d206764986e8/html5/thumbnails/22.jpg)
Ciklusok (until)
until [kifejezés]
do
utasítások
done;
A ciklus addig fut, míg a feltétele igazzá nem válik.
While [ $A eq 1]
do
echo $A
done;
![Page 23: 1. UNIX shellaries.ektf.hu/~serial/kiralyroland/download/szkript.pdf · 2012. 1. 25. · Parancsértelmez shellscriptneve ... Ebben az esetben a szkript tartalmazza a parancsértelmez](https://reader035.fdocuments.us/reader035/viewer/2022071516/6138de350ad5d206764986e8/html5/thumbnails/23.jpg)
Függvények
Függvénynév ()
{
parancsok;
}
Paraméterek nem használhatóak, viszont a globális változóka használhatóak. A parancssori argumentumokhoz ($#,..,$1,$2,...,$9) nem férnek hozzá. Ezeket változókba kötve érheti el a subrutin.
![Page 24: 1. UNIX shellaries.ektf.hu/~serial/kiralyroland/download/szkript.pdf · 2012. 1. 25. · Parancsértelmez shellscriptneve ... Ebben az esetben a szkript tartalmazza a parancsértelmez](https://reader035.fdocuments.us/reader035/viewer/2022071516/6138de350ad5d206764986e8/html5/thumbnails/24.jpg)
Kifejezések kiértékelése
Expr
echo `expr $A + 2`
echo `expr $A / 2`
echo `expr $A \* 2`
echo `expr $A 2`
eval
parancs végrehajtása
A = eval változó
A = `parancs` is m ködikű
vizsgálható a parancs kimenete...
![Page 25: 1. UNIX shellaries.ektf.hu/~serial/kiralyroland/download/szkript.pdf · 2012. 1. 25. · Parancsértelmez shellscriptneve ... Ebben az esetben a szkript tartalmazza a parancsértelmez](https://reader035.fdocuments.us/reader035/viewer/2022071516/6138de350ad5d206764986e8/html5/thumbnails/25.jpg)
Beágyazott file
Cat << `marker' kiírandó szöveg marker
Fájlba ágyazható más fájlok tartalma, ami automatikusan ki is “ csomagolódik”
touch file
cat file << `m' “szöveg a fájlban” m
cat file << `b' “szöveg a fájlban” b
![Page 26: 1. UNIX shellaries.ektf.hu/~serial/kiralyroland/download/szkript.pdf · 2012. 1. 25. · Parancsértelmez shellscriptneve ... Ebben az esetben a szkript tartalmazza a parancsértelmez](https://reader035.fdocuments.us/reader035/viewer/2022071516/6138de350ad5d206764986e8/html5/thumbnails/26.jpg)
Awk szkriptek
AWK szerkezete
Az AWK olyan szkript (sz r ként ű őviselkedhet, vagyis illeszthet parancsok őkimenetése), melybe komplex programokat írhatunk a megfelel szintaxis őbetartásával.
Az AWK szkriptek futtatása hasonló a shell scriptekéhez.
Az AWK beágyazható a shell szkriptekbe:
cat /etc/passwd |awk '...'
![Page 27: 1. UNIX shellaries.ektf.hu/~serial/kiralyroland/download/szkript.pdf · 2012. 1. 25. · Parancsértelmez shellscriptneve ... Ebben az esetben a szkript tartalmazza a parancsértelmez](https://reader035.fdocuments.us/reader035/viewer/2022071516/6138de350ad5d206764986e8/html5/thumbnails/27.jpg)
Awk szkriptek
awk Fawk F “Parameters” 'BEGIN'BEGIN{ head} { main part } ENDEND{ tail }'' [file or stream]
command [args] |awk '...'
Pl.:awk 'END { print NR }' /etc/passwdawk 'END { print NR }' /etc/passwd awk 'NF > 0' /etc/passwd awk 'NF > 0' /etc/passwd awk F ' ' MIT=$1 MIRE=$2 ' mainpart' awk F ' ' MIT=$1 MIRE=$2 ' mainpart'