http://www.kiv.zcu.cz/~txkoutny/common/ups/skoleni/skoleni-unix-7.html#ss7.1
Náš první program nemůže být samozřejmě nic jiného než naprosto klasické "Hello World" :-) Tento program jednoduše vypíše na obrazovku slova Hello World. Takže nyní nastartujem textový editor a napíšeme do něj následující řádky:
#!/bin/shecho "Hello, world"První řádka programu říká Unixu, co se má použít za interpret. V našem případě tedy sh, který se nachází v /bin/sh. Jestliže však je váš sh v jiném adresáři, musíte zadat jinou cestu. Určení interpretru, který bude program vykonávat je velice důležité, protože pak by se taky mohlo stát, že skript bude vykonávat úplně jiný interpretr a tam by náš skript pravděpodobně vůbec běžet nemusel. Příkaz echo provede výstup zadaného řetězce na obrazovku. Teđ už zbývá pouze tento skript spustit.
Skript je možné spouštět různými způsoby:
1) Vyvoláním shellu s parametrem tvořeným jménem souboru se skriptem následovaným případnými parametry skriptu:
$ sh skript parametry
$ csh skript parametry
Není-li soubor skript v aktuálním adresáři, je nutné uvést cestu k souboru. K souboru skript stačí mít právo read. Pro provedení skriptu se spouští přímo zadaný interpret příkazů, který se může lišit od interpretu, který právě daný uživatel používá.
2) Zpracováním skriptu aktuálním shellem:
$ . skript parametry
(příkaz tečka) v sh, nebo
$ source skript parametry
v csh. Pravidla jsou stejná jako v případě 1).
3) Zadáním jména skriptu:
$ skript parametry
V tomto případě je nutné mít k souboru skript právo read a execute (kdyby se jednalo o binární program, stačilo by pouze execute). Aby nebylo nutné zadávat celou cestu ke skriptu, je možné skript umístit do jednoho z adresářů uvedených v proměnné $PATH. Jestliže se jedná o skript, který nebyl umístěný v jednom z těchto adresářů v okamžiku nalogování, je nutné v csh zadat příkaz
$ rehash
Csh si totiž při svém startu vytváří databázi všech programů ve všech adresářích uvedených v $PATH a nově vytvořený skript nebere v úvahu, dokud se databáze příkazem rehash neaktualizuje.
Předpokládejme, že se náš skript jmenuje hello.sh (přípona sh není podmínkou, většina skriptů žádnou příponu nemá). Pak bude zápis chmod vypadat takto:
$ chmod 700 ./hello.sh$ chmod +x ./hello.shNásledně skript můžeme spustit takto:
$ ./hello.shHello, worldA je to! Máte první program. A funguje. Sice zatím toho mnoho neumí, ale jako demonstrace primitivního programu zatím postačí. Takže čeho jsme docílili? Použili jsme příkaz shellu echo, který zajistil výpis textu na obrazovku. Jeho paramtrem je právě ten text. Je také možný ještě volitelný parametr -n, který zajistí to, že po vypsání textu neskočí na další řádku. A ještě zkuste jednu věc. Napište přímo do příkazové řádky toto:
$ echo "Hello, world"Hello, worldJe tedy doufám zřejmé, které příkazy se používají v sh skriptu. Ty stejné, co můžete napsat přímo do příkazové řádky.
Nyní tedy zkusme napsat mnohem užitečnější program. Program, který přesune všechny soubory do adresáře, a pak tento adresář smaže i s tím, co obsahuje. Poté se tento adresář znovu vytvoří. To můžeme udělat následujícími příkazy:
$ mkdir trash$ mv * trash$ rm -rf trash$ mkdir trashMísto toho, aby jsme to pořád psali do příkazové řádky, můžeme si na to místo toho vyvořit na tuto úlohu skript:
#!/bin/shmkdir trashmv * trashrm -rf trashmkdir trashecho "Všechny soubory jsou smazány!"Tento soubor můžeme nazvat třeba clean.sh, nastavit práva a používat. Jednoduché, že? Do programu je také možné přidat komentář. Děje se tak pomocí znaku #. Začíná-li řádka právě tímto znakem, bere se tato řádka jako poznámka. Tedy tato řádka se nevykonává. Jedinou výjimku tvoří právě první řádka skriptu, ve které je uveden interpreter, který provede skript. Je dobré poznámky používat už jen z toho důvodu, aby jste si program zpřehlednili. (I když správný programátor ví, že komentáře jsou zbytečné, že činnost programu vyplyne z kódu.)
Ještě bych upozornil na využívání manuálových stránek (nebo na nápovědu info). Mnoho variant použití konkrétního příkazu se dozvíte právě zde. Pro ukázku bych vám zde uvedl manuálovou stránku programu echo:
ECHO(1) ECHO(1)
JMÉNO
echo - zobrazí řádek textu
POUŽITÍ
echo [-ne] [řetězec ...]
echo {--help,--version}
POPIS
Tato manuálová stránka popisuje GNU verzi příkazu echo.
Pamatujte, že většina shellů má vestavěný příkaz stejného
jména s podobnou funkcí.
Příkaz echo vypíše všechny zadané řetězce na standardní
výstup, oddělené mezerami a ukončené znakem newline.
VOLBY
-n Nevypisovat závěrečný znak newline.
-e Povolit interpretaci následujících obráceným
lomítkem uvozených znaků v řetězcích:
\a pípnutí, zvonek (bell)
\b backspace
\c nevypisovat závěrečný znak newline
\f nová stránka (form feed)
\n nový řádek (new line)
\r návrat vozíku (carriage return)
\t horizontální tabelátor (horizontal tab)
\v vertikální tabelátor (vertical tab)
\\ obrácené lomítko (backslash)
\nnn znak, jehož ASCII kód je nnn (osmičkově)
VOLBY
Když je GNU příkaz echo vyvolán právě s jedním parametrem,
jsou rozpoznávány následující volby:
--help Vypíše návod k použití na standardní výstup a bez
chybně skončí.
--version
Vypíše číslo verze na standardní výstup a bezchybně
skončí.
FSF GNU Shell Utilities 1