dum | žák

Linux

Název školy Vyšší odborná škola obalové techniky a Střední škola, Štětí, příspěvková organizace
Adresa školky Kostelní 134, 411 08 Štětí
46773509
Název operačního programu OP Vzdělávání pro konkurenceschopnost
Registrační číslo CZ.1.07/1.5.00/34.1006
Označení vzdělávacího materiálu VY_32_INOVACE_21_PSS_417
Název tématické oblasti (sady) Operační systémy
Název materiálu Skriptování
Anotace Předkládá základy skriptování v shellu BASH. Ukazuje na jednoduchém příkladu způsob psaní skriptů, používání proměnných a výstupu z jiných programů.
Autor Ivan Pomykacz Jazyk český
Očekávaný výstup Vytvoří spustitelný skript. Používá proměnné a výstupy jiných programů.
Klíčová slova skript, bash, proměnná
Druh výukového zdroje Výklad Věková skupina žáků 17+
Typ interakce aktivita Ročník 3.
Speciální vzdělávací potřeby žádné
Zhotoveno, (datum/období) 13.5.2014 Celková velikost

pdf icon
Skriptování

Obsah

Na Linuxu založené systémy jsou známé mimo jiné i tím, jak jsou svázány se skriptovacími jazyky (jako bash, perl nebo python). Např. pomocí bashe jsou napsány init skripty, pomocí kterých se startuje operační systém.

První skript

Vytvořme soubor skript.sh. Na první řádek se standardně píše speciální uvozovací řetězec, který říká, jaký interpret se má použít pro vykonání skriptu.

#!/bin/bash

echo "Skript běží ..."
sleep 2s
echo "Skript skončil."

Příkaz echo vypíše text v uvozovkách (i když ty nejsou vždy nutné). Program sleep pozastaví běh skriptu na dvě vřetiny.

Spuštění skriptu

Existuje několik možností jak skript spustit. Vytvořený soubor nemá práva na spuštění, a i kdyby je měl, nepůjde spustit jenom tak, že napíšeme do shellu název skriptu (jako u ostatních programů).

Použití interpretu

Tento způsob spočívá v tom, že prostě spustíme interpret bashe, který se postará o vykonání skriptu.

tux@wheezy:~$ bash skript.sh
Skript běží ...
Skript skončil.
Práva na spuštění

Skriptu jednoduše přidáme právo x. Následně skript spustíme tím, že k němu zadáme cestu (relativní nebo absolutní).

tux@wheezy:~$ chmod +x skript.sh
tux@wheezy:~$ ls -l skript.sh
-rwxr-xr-x 1 tux tux 68 kvě 25 21:02 skript.sh
tux@wheezy:~$ ./skript.sh
Skript běží ...
Skript skončil.
Proměnná PATH

Nejpoužitelnější je však umístění skriptu na místo, které je definováno v proměnné PATH. Případně toto místo do proměnné PATH přidáme.

Vytvořme adresář ~/bin a přesuňme do něj vytvořený skript, který již má nastavená práva na spuštění.

tux@wheezy:~$ mkdir bin
tux@wheezy:~$ mv skript.sh bin/

Výhoda tohoto řešení je, že Debian počítá dopředu s tím, že si uživatel vytvoří u sebe v adresáři podadresář ~/bin. Při dalším přihlášení bude tento adresář automaticky přidán do proměnné PATH.

Jakmile se tedy odhlasíte a znovu přihlásite, můžete spustit skript pouhým zapsáním jeho názvu.

tux@wheezy:~$ skript.sh
Skript běží ...
Skript skončil.

Proměnné

BASH je skriptovací jazyk, který umožňuje deklarovat proměnné, testovat výrazy, cyklení kódu i deklarace funkcí. Proměnné se deklarují zapsáním názvu a symbolem rovná se. Hodnota se nemusí zadávat, proměnná bude prostě prázdná.

Deklarujme proměnnou CAS s hodnotou "5s". Proměnnou pak dosadíme do prvního příkazu echo a do příkazu sleep (na místo původních 2s).

#!/bin/bash

CAS=5s

echo Skript poběží po dobu $CAS ...
sleep $CAS
echo Skript skončil.

Výstup programu

Do proměnné lze uložit výstup jiného programu a ten pak použít dál. Takový příkaz se musí uzavřít do speciální strof.

#!/bin/bash

CAS=5s
DATUM=`date +%d.%m.%Y`

echo Skript byl spuštěn dne $DATUM
echo Skript poběží po dobu $CAS ...
sleep $CAS
echo Skript skončil.

V tomto případě ovšem proměnnou DATUM vůbec nepotřebujeme. Výraz `date +%d.%m.%Y` bychom mohli napsat přímo do příkazu echo.

tux@wheezy:~$ skript.sh
Skript byl spuštěn dne 25.02.2014
Skript poběží po dobu 5s ...
Skript skončil.

Parametry při spuštění

Při spuštění lze skriptu předat parametry, se kterými lze následně ve skriptu dál operovat.

Jsou to automaticky dostupné proměnné $0, $1, $2, .. $9. Přičemž proměnná $0 obsahuje název spuštěného skriptu.