Bash scripting :: 1.dil

Zdroj: SOOM.cz [ISSN 1804-7270]
Autor: Nostur
Datum: 20.11.2006
Hodnocení/Hlasovalo: 4/11

Kratky uvod do bash scriptingu, prvni dil

TOC:

0x01:Intro
0x02:bash
0x03:Zaciname
-hello world
- promenne
- for loop
- while loop
- until loop a cteni STDIN
0x04:Requiem

0x01 :: Intro

Bash, nekdy take nazyvan shell scripting [ zalei na tom, ktery shell preferujete :]] je samostatny scriptovaci jazyk, umoznujici take automaticky vykonavat prikazy jako na normalnim shellu, pro vsechny widloidni zrudy je to takovy vylepseny batch scripting. Byl primarne designovan pro Bourne-Again SHell, coz je plny nazev zkratky bash. bash scripting nachazi uplatneni snad uplne vsude, od init scriptu pres startx prikaz az po scripty pro zpracovani udaju z fajlu.

0x02 :: bash

Jak jsem jiz rekl vyse, plny nazev je Bourne-Again SHell, je to prakticky nastupce Bourne shellu, napsaneho Stephenem Bournem olem roku 1978, ktery byl distribuovan s Unixem verze 7. bash je defaultnim shellem na naproste vetsine Linux systemu, a take na Mac OS X Tiger, a je dostupna snad na vsechn unix-like systemech. Byl dokonce portnut do windows jao stary znamy cygwin.

0x03 :: Zaciname

Zacal bych klasickym Hello World, nerad rusim zavedene zvyky :P Nasledujici script si potom of course rozebereme.

#!/bin/bash # toto je komentar
echo "Hello World";

#!/bin/bash neni nutna, ale mela by se pouzivat, rika totiz prekladaci co pouzit. !!Neplest s oznacenim pro komentare!!
echo " Hello World"; myslim ze mluvi za sebe. staci snad rici ze neni potreba zavirat zpravu do "", ale staci proste '' ci uplne bez uvozovek.
Prazdny radek se na konec dava proto, aby se nam nerozhodil bash pri spusteni.

Ted script jednoduse spustime a uvidime, co nam vypise"

[nostur@Pacman] ~ > sh helloworld.sh

#!/bin/bash
hello=Hello;
world=World;
echo "$hello $world";

Zde vidite jednoduchou praci s promennymi a jak je skladat. Snad bych jen upozornil, ze ciselne promenne jsou rezervovane pro argumenty a nazev fajlu, tedy $0 je jmeno souboru, $1 je prvni argument, $2 je druhy argument atd.

#!/bin/bash
for i in `cat $0`; # Pro kazdy radek v prikazu `cat $0`
do # udelej
echo "$i"; # printni ten ktery radek
done # done ukoncuje syntaxy do,
tedy par do, done, pouziva se u for


Jednoduchy for loop, stejny nebo podobny jako u vsech ostatnich jazyku.

#!/bin/bash
i=1 # Definice promenne
while [ i != 0 ]; # Dokud se i nerovna 0
do
echo "$i"; # Vypis $i
i=$[$i+1]; # Zmeni promennou o 1 cislo vys
done

Klasicka while loop, ktera donekonecna [tedy donekokill] bude vypisovat hodnotu i, ktera se bude stale zvetsovat.

#!/bin/bash
read i # Cte STDIN a uklada ji do
promenne i until [ $i = 5 ]; # until syntaxe
do
echo "i neni pet";
done

Precte hodnotu i, kterou zadate z klavesnice, a pokud se rovna 5, nic nevypise, pokud se 5 nerovna, zacne jak sileny vypisovat "i neni pet"

0x04 :: Requiem
Tak to by bylo pro dnesek vse vazeni, uznavam, moc toho nebylo, ale cekejte, priste se dozvite zajimavejsi veci, krome nudnych advanced loop syntaxi se dozvite jak pouzivat barvicky v terminale, ci ktere soubory upravit, abyste meli lepe vypadajici shell prompt, a to je prozatim ode me vse, veskere otazky posilejte na admin@tkroupa.net, ne sem do komentaru, na ne nemam cas. Veskere flejmy posilejte do /dev/null a mente shell na /bin/false

__EOF