Bourne shell scrpit-ek UNIX alatt Referencia 1. Scriptek Shell script-nek nevezünk minden shell-parancsokat tartalmazó futtatható szövegfile-t. A file minden sora parancsként (vagy parancs részeként) értelmeződik. Minden, ami a # jel után az aktuális sor végéig áll, megjegyzés (komment). Konvenció szerint ha script legelső sorában egy #!/futtathato/program formátumú komment van, akkor a script futtatásakor ez a 'program' indul el, és értelmezi a scriptet. (Vagyis mintha a /futtathhato/program < script parancsot adtuk volna ki). Ha nincs az első sorban ilyen megjegyzés, a default shell értelmezi a scriptet. 2. Környezeti változók, értelmezés Mivel minden scriptet külön shell (vagy más értelmezőprogram) futtat, minden itt definiált és nem export-ált változó lokális érvényű. Értékadás az = utasítással történik. 2.1. Behelyettesítés $VALTOZO vagy ${VALTOZO} A változó értéke, string-ként ${VALTOZO-nincs} Ha nincs definiálva a VALTOZO, nincs-et helyettesítsen ${VALTOZO=xxx} Mint az előző, de itt meg a VALTOZO fel is veszi az xxx értéket ${VALTOZO?uzenet?) Ha nincs definiálva a VALTOZO, kiírja az uzenet-et és kilép 2.2. Előre definiált változók # a parancs indításakor megadott argumentumok száma ? az utolsó végrehajtott parancs visszatérési értéke decimálisan $ a script-et futtató értelmezőprogram process ID-je ! a legutoljára indított háttérprocessz PID-je egyéb, nem a shell által beállított, de konvencionálisan létező változók: HOME a felhasználó HOME könyvtára PATH a futtatható programok keresési útvonala MAIL a felhasználó levelezési INBOX-a (file, ahová a levelei érkeznek) PS1 elsődleges prompt PS2 másodlagos prompt (többsoros parancsoknál) 3. Utasítások Ha egy sh script-ben itt nem szereplő utasítás van, a shell azt megpróbálja a PATH-ban megadott könyvtárakban megkeresni és külső parancsként végrehajtani 3.1 Vezérlési szerkezetek for name in s1 s2 ...sn do list done A list-ben szereplő utasítások végrehajtása úgy, hogy a ciklkusváltozó (name) sorban felveszi s1, s2 ... sn értékeket Pl. for i in joska pista bela do mail $i