PředchozíNahoruDalšíObsah

2. První program

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/bash
echo "Hello, world"

První řádka programu říká Linuxu, co se má použít za interpret. V našem případě tedy bash, který se nachází v /bin/bash. Jestliže však je váš bash 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. Pro bližší prozkoumání některých příkazů lze použít manuálových stránek. Teđ už zbývá pouze tento skript spustit. Implicitně textový editor nedá souboru právo spuštění. Musíme ho tedy dodat explicitně příkazem chmod. 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:

xconsole$ chmod 700 ./hello.sh
xconsole$ chmod +x ./hello.sh

Následně skript můžeme spustit takto:

xconsole$ ./hello.sh
Hello, world

A 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:

xconsole$ echo "Hello, world"
Hello, world

Je tedy doufám zřejmé, které příkazy se používají v bash 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:

xconsole$ mkdir trash
xconsole$ mv * trash
xconsole$ rm -rf trash
xconsole$ mkdir trash

Mí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/bash
mkdir trash
mv * trash
rm -rf trash
mkdir trash
echo "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

PředchozíNahoruDalšíObsah

9. dubna 2001 18:33