PSK3-9. Základy skriptování. Hlavička

Podobné dokumenty
PROGRAMOVÁNÍ V SHELLU

Přednáška 7. Celočíselná aritmetika. Návratový kód. Příkazy pro větvení výpočtu. Cykly. Předčasné ukončení cyklu.

Střední odborná škola a Střední odborné učiliště, Hořovice

PSK3-5. Přesměrování vstupu a výstupu. Vstup a výstup

ŘÍDÍCÍ STRUKTURY - PODMÍNKY

Sekvenční a podmíněné provádění

PSK3-7. Plánované spouštění programů a správce sezení. Skupiny procesů

Střední odborná škola a Střední odborné učiliště, Hořovice

Skripty - úvod. Linux - skripty 2

Funkce, podmíněný příkaz if-else, příkaz cyklu for

Přednáška 8. Proměnné. Psaní a ladění skriptů. Parametry skriptu. Vstup a výstup. Konfigurační soubory shellu. Úvod do Operačních Systémů Přednáška 8

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

C2110 Operační systém UNIX a základy programování

Úvod do Unixu. man: příkaz pro zobrazení nápovědy k danému příkazu, programu (pokud je k dispozici), např. man cp. pwd: vypíše cestu k aktuální pozici

6. Příkazy a řídící struktury v Javě

WSH Windows Script Hosting. OSY 2 Přednáška číslo 2 opravená verze z

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Začínáme vážně programovat. Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů

6 Příkazy řízení toku

Identifikátory označují objekty v programu používané (proměnné, typy, podprogramy).

PSK3-11. Instalace software a nastavení sítě. Instalace software

Úvod do programování - Java. Cvičení č.4

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

Logické operace. Datový typ bool. Relační operátory. Logické operátory. IAJCE Přednáška č. 3. může nabýt hodnot: o true o false

Algoritmizace a programování

Úvod do Operačních Systémů

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh Podmíněný příkaz

Úvod do Operačních Systémů

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

DSL manuál. Ing. Jan Hranáč. 27. října V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v

Stručný návod k programu Octave

C2110 Operační systém UNIX a základy programování

2.1 Podmínka typu case Cykly Cyklus s podmínkou na začátku Cyklus s podmínkou na konci... 5

A7B38UOS Úvod do operačních systémů. 6. Cvičení. Příkazy sed a awk

Proměnné a parametry. predn_08.odt :00:38 1

Řídicí struktury. alg3 1

DUM 20 téma: Test dávky

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

Algoritmizace a programování. Ak. rok 2012/2013 vbp 1. ze 44

Obsah přednášky. programovacího jazyka. Motivace. Princip denotační sémantiky Sémantické funkce Výrazy Příkazy Vstup a výstup Kontinuace Program

Bottle -- příklad. Databáze. Testovací data. id Jedinečný identifikátor řádku: Bude typu INT s AUTO_INCREMENT a nastavíme ho jako primární klíč

Algoritmizace. 1. Úvod. Algoritmus

BASH. Kouzla s příkazovou řádkou. Petr Koloros

Přednáška 1. Úvod. Historie OS Unix. Architektura OS Unix. Interpret příkazů. SHELL. Zpracování příkazové řádky. Speciální znaky. Zkratky příkazů.

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

Střední odborná škola a Střední odborné učiliště, Hořovice

Operační systém UNIX

DUM 06 téma: Tvorba makra pomocí VBA

Programovací jazyk Pascal

PHP tutoriál (základy PHP snadno a rychle)

AUTOMATIZACE ÚKONŮ SPRÁVY OPERAČNÍCH SYSTÉMŮ II. Ing. Petr Klimša

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

Programovací jazyky. imperativní (procedurální) neimperativní (neprocedurální) assembler (jazyk symbolických instrukcí)

Domácí příprava k předmětu YD38UOS Úloha 10 práce s lokálními soubory pokračování

Přednáška 1. Úvod. Historie OS Unix. Architektura OS Unix. Interpret příkazů SHELL. Zpracování příkazové řádky. Speciální znaky. Zkratky příkazů.

Operační systémy. Cvičení 1: Seznámení s prostředím

8 Třídy, objekty, metody, předávání argumentů metod

PSK1-9. Číslicové zpracování signálů. Číslicový signál

VISUAL BASIC. Práce se soubory

ANOTACE vytvořených/inovovaných materiálů

Obsah. Začínáme programovat v Ruby on Rails 9. Úvod Vítejte v Ruby 15. O autorovi 9 Poděkování 9

Úvod do Linuxu. SŠSI Tábor 1

Střední odborná škola a Střední odborné učiliště, Hořovice

Preprocesor a koncepce (větších) programů. Úvod do programování 2 Tomáš Kühr

Základy PERLu snadno a rychle

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE LEXIKÁLNÍ ANALÝZA

Operační systémy Linux, Mac OS X a jejich srovnání

- jak udělat konstantu long int: L long velka = 78L;

Nastroje na zpracovani textu:

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

Algoritmy a datové struktury

Střední odborná škola a Střední odborné učiliště, Hořovice

MQL4 COURSE. By Coders guru -5 Smyčky & Rozhodnutí Part 1

PSK3-3. Základní příkazy. Zápis cesty

Skripta ke školení. Základy VBA. vypracoval: Tomáš Herout. tel:

Algoritmy I. Cvičení č. 2, 3 ALGI 2018/19

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

Správné vytvoření a otevření textového souboru pro čtení a zápis představuje

Lekce 04 Řídící struktury

Základy algoritmizace a programování

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Úvod do Matlabu. Praha & EU: Investujeme do vaší budoucnosti. 1 / 24 Úvod do Matlabu

2 Datové typy v jazyce C

Činnost: 1) Vyhodnotí se výraz E. 2) Jeho hodnota se uloží do proměnné V.

C++ Akademie SH. 2. Prom nné, podmínky, cykly, funkce, rekurze, operátory. Michal Kvasni ka. 20. b ezna Za áte níci C++

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Operační systémy. Cvičení 4: Programování v C pod Unixem

Tvorba výrazu: speciální znaky shellu se uvádějí do apostrofů jednotlivé části výrazu se oddělují mezerou

Software602 Form Designer

Základy programování (IZP)

VISUAL BASIC. Přehled témat

Lekce 6 IMPLEMENTACE OPERAČNÍHO SYSTÉMU LINUX DO VÝUKY INFORMAČNÍCH TECHNOLOGIÍ JAZYK C

Speciální soubory. Editace příkazové řádky. $ fg mp3blaster $./skript.sh. [2]+ Stopped./skript.sh $ bg [2]+./skript.sh & $ fg 2./skript.

PODOBÁ SE JAZYKU C S NĚKTERÝMI OMEZENÍMI GLOBÁLNÍ PROMĚNNÉ. NSWI162: Sémantika programů 2

PHP - úvod. Kapitola seznamuje se základy jazyka PHP a jeho začleněním do HTML stránky.

Programovací jazyk C(++) C++ area->vm_mm->locked_vm -= len >> PAGE_SHIFT;

Inovace výuky prostřednictvím šablon pro SŠ

Iterační výpočty. Dokumentace k projektu č. 2 do IZP. 24. listopadu 2004

PSK2-16. Šifrování a elektronický podpis I

type Obdelnik = array [1..3, 1..4] of integer; var M: Obdelnik;

Transkript:

PSK3-9 Název školy: Autor: Anotace: Vyšší odborná škola a Střední průmyslová škola, Božetěchova 3 Ing. Marek Nožka Základy skriptování v unixovém shellu Vzdělávací oblast: Informační a komunikační technologie Předmět: Počítačové sítě a komunikační technika (PSK) Tematická oblast: Operační systém Linux/Unix Výsledky vzdělávání: Klíčová slova: Druh učebního materiálu: Typ vzdělávání: Ověřeno: Zdroj: Žák vytvoří jednoduchý skript pro příkazové prostředí Linux, Unix, shell, bash, skript Online vzdělávací materiál Střední vzdělávání, 4. ročník, technické lyceum VOŠ a SPŠE Olomouc; Třída: 4L Vlastní poznámky, Vilém Vychodil: Linux Příručka českého uživatele Základy skriptování Unixový shell se dá použít nejen pro interaktivní práci, ale i jako programovací jazyk. Jednotlivé příkazy můžeme zapsat do souboru a tento soubor nechat interpretovat příkazovým interpretem. Tento soubor je potom označován jako skript nebo shellový skript. Hlavička Aby bylo možné skript jednoduše spouštět je nutné opatřit ho hlavičkou: První řádek začíná dvojicí znaků #! a pokračuje cestou k příkazovému interpretu: #!/bin/bash Tento mechanizmus je zcela obecný a uplatní se stejně i pro skripty v jiný jazycích. Například pro programovací jazyk Python, by hlavička mohla vypadat takto: 1

#!/usr/bin/python Aby se skript choval jako každý jiný program je jeho správná hlavička podmínkou nutnou nikoli postačující. Skript musí být spustitelný1 a musí být umístěn tak, aby ho příkazový interpret našel. Pokud je vše toto splněno může ho uživatel spouštět, jako by to byla běžná součást sytému. $ mujskript.sh Příkaz. (tečka) Ano. je opravdu příkaz. Výše popsaný způsob spouštění má za následek, že námi vytvořený skript je spuštěn v podřízeném shell-u. To mimo jiné znamená, že změny provedené v proměnných prostředí nebudou po dokončení skriptu viditelné. Použijeme-li příkaz: $. soubor...bude shell postupně číst soubor a jednotlivé příkazy vykonávat v aktuálním shellu. Výsledek bude stejný jako kdyby uživatel zadával příkazy rovnou v interaktivním prostředí. Poznámky Poznámky se zapisují za znak #. Vše od znaku # do konce řádku je interpretem ignorováno. Přebírání parametrů (argumentů) Skriptům lze stejně jako programům předávat parametry. Ty jsou uvnitř skriptu dostupné po mocí speciálních proměnných. $0 jméno skriptu $1 první parametr $2 druhý parametr $n n-tý parametr, n nabývá hodnoty 1 až 9 ${n} libovolný n-tý parametr $# číslo posledního parametru $* seznam všech parametrů -- stejné jako "$1 $2 $3..." $@ seznam všech parametrů -- stejné jako "$1" "$2" "$3"... Příkaz shift N vymaže prvních N parametrů a posune význam proměnných $n a ${n} 2 # Soubor: mujskript.sh 3 # Popis: Ukázka předávání parametrů 2

4 ############################################################ 6 echo Jmenuji se: $0 7 echo Parametry: $@ 8 echo první: $1 9 echo třetí: ${3} 10 11 shift 3 12 echo ">>> první 3 parametry byli vymazány" 13 echo Parametry: $@ 14 $./mujskript.sh toto je ukazka predavani parametru Jmenu ji se:./mujskript.sh Parametry: toto je ukazka predavani parametru první: toto třetí: ukazka >>> první 3 parametry byli vymazány Parametry: predavani parametru Návratová hodnota Jak bylo uvedeno2 každý program, který ukončí svou činnost korektně vrací jako svou návratovou hodnotu 0. Pokud se v průběhu programu objeví chyba, dává o tom program vědět svou nenulovou návratovou hodnotou. Okamžité ukončení skriptu s konkrétní návratovou hodnotou vyvolá příkaz exit N. 2 # Soubor: navrat.sh 3 # Popis: Ukázka návratové hodnoty 4 ############################################################ 6 if [ $1 ] && [ $1 = 'ano' ]; then 7 echo OK 8 exit 0 9 else 10 echo napiš ano 11 exit 1 12 fi 13 $./navrat napiš ano $ echo $? 1 $./navrat NEE napiš ano $ echo $? 1 $./navrat ano OK $ echo $? 0 3

Funkce Shell umožňuje vytvářet funkce. Funkce se chová stejně jako samostatný skript, včetně předávání parametrů a návratové hodnoty. Ukončení funkce s konkrétní návratové hodnotou je zajištěna příkazem return N. Sada proměnných pro předávání parametrů funguje stejně jako u skriptu. Syntaxe funkce v shellu: název() { příkaz příkaz } 2 # Soubor: scitani.sh 3 # Popis: Ukázka funkce 4 ############################################################ 6 7 plus() { 8 echo ${1}+${2}=$[ $1 + $2 ] 9 } 10 11 plus $1 $2 12 plus $3 $4 13 plus $ $6 $./scitani.sh 1 2 3 4 6 1+2=3 3+4=7 +6=11 Podmínky cykly Užití podmínek a cyklů není vázáno jen na skripty. Stejně tak je možné je použít v interaktivní práci. V následujících ukázkách jsem zvolil způsob zápisu, který mi připadá přehledný, ale platí, že středník ; může být zaměněn za konec řádku a naopak. if -- podmíněné vykonání Syntaxe obecně vypadá takto: if VYRAZ; then 4

fi if VYRAZ; then else fi if VYRAZ; then elif VYRAZ; then elif VYRAZ; then... else fi VYRAZ: VYRAZ je příkaz nebo posloupnost příkazů oddělených pomocí metaznaku (logický součet -- nebo) nebo metaznaku && (logický součin -- and). O pravdivosti nebo nepravdivosti výrazu rozhoduje jeho návratová hodnota. VYRAZ je možné negovat pomocí znaku! na jeho začátku. Jako VYRAZ se velice často používá program test respektive jeho synonymum [. Podmínka potom vypadá jako by byla zapsána do hranatých závorek, ale ve skutečnost je volán program test. Program test: 1. porovnává řetězce 2. porovnává celá čísla 3. testuje typy souborů a jejich stáří Více se dočtete v manuálové stránce programu test. 2 # Soubor: if.sh 3 # Popis: Ukázka podmínky 4 ############################################################ 6 if [ -z $1 ]; then 7 echo program nemá žádné parametry 8 else 9 echo program má $# parametrů

10 fi 11 case -- shoda se vzorem Vícenásobné větvení pomocí vzorů ukážeme na příkladu: 2 # Soubor: case.sh 3 # Popis: Ukázka CASE 4 ############################################################ 6 case $1 in 7 ahoj nazdar cau) echo pozdrav;; 8 [tt]*) echo slovo zacina na T;; 9 *e*) echo slovo obsahuje e;; 10 *) echo cokoliv jiného;; 11 esac Větev ukončují dva středníky. Znak slouží jako oddělovač vzorů ve významu nebo. Pro vzory platí stejná pravidla jako pro expanzi jmen souborů. for -- pro každou položku seznamu Syntaxe cyklu for vypadá takto: for PROMENNA in SEZNAM; do. Nejprve se expanduje SEZNAM. PROMENNA nabývá při každé iteraci postupně jedné z hodnot SEZNAMu. for cislo in 1 2 3 4; do echo cislo je $cislo Jako seznam může ale být uvedeno neúplné jméno souboru for soubor in *; do echo menim casove razitko: $soubor touch $soubor... nebo program, který seznam vrátí. 6

for cislo in $(seq 10); do echo cislo je $cislo while, until -- opakování na základě podmínky Syntaxe cyklu while a until vypadá naprosto stejně. Jediný rozdíl je v podmínce. Iterace cyklu while se vykoná pokud podmínka platí. Iterace cyklu until se vykoná pokud podmínka neplatí. K okamžitému ukončení těla cyklu slouží příkaz break k přeskočení zbytku těla cyklu příkaz continue. while VYRAZ; do VYRAZ má stejný význam jako u podmínky if. while ping -c 3 172.16.6.3 &>/dev/null; do echo PC je zapnute. echo K PC se není možné připojit. Standardní vstup s těla skriptu Častokrát požadujeme, aby program spuštěný z těla skriptu byl "nakrmen" vstupními daty. Pro přesměrování standardního vstupu ze souboru sice slouží metaznak < ale vytváření samostatného souboru pro vstupní data není vždy efektivní. Proto použijeme metaznak <<. prikaz <<OMEZOVAC DATA DATA DATA OMEZOVAC OMEZOVAC je libovolná posloupnost znaků. Ukončovací OMEZOVAC musí být uveden nasamostatném řádku. Ve vstupních datech je možné zapsat i proměnné. pokud je "OMEZOVAC" v uvozovkách dereference proměnných se neprovádí. 7

cat <<EOF wc -w u textu, tery jsem sem napsal se provede pocitani slov. Pocet slov je: EOF 1. chmod a+x ~/bin/mujskript.sh 2. v kapitole Návratová hodnota a Oddělování příkazů 8