Rozšíření ksh vůči sh při práci s proměnnými



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

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

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

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.

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku

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

Ahoj mami. Uložení dat v počítači. Příklady kódování dat. IAJCE Přednáška č. 4

PROGRAMOVÁNÍ V SHELLU

VISUAL BASIC. Práce se soubory

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

Úvod do programovacích jazyků (Java)

Programovací jazyk Pascal

Algoritmizace a programování

Sada 1 - Základy programování

PRACUJEME S SHELLEM Ať žije BASH.

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

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

Formátová specifikace má tvar (některé sekce nemají smysl pro načítání) %

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

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

VY_32_INOVACE_08_2_04_PR

7 Formátovaný výstup, třídy, objekty, pole, chyby v programech

Sada 1 - PHP. 03. Proměnné, konstanty

Paměť počítače. alg2 1

Vícerozměrná pole. Inicializace pole

Příkazy preprocesoru - Před překladem kódu překladačem mu předpřipraví kód preprocesor - Preprocesor vypouští nadbytečné (prázdné) mezery a řádky -

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ů.

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

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

Úvod, jednoduché příkazy

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

Třídy a struktury v C++

DUM 07 téma: Proměnné, konstanty a pohyb po buňkách ve VBA

Operační systém UNIX

Úvod do programování. Lekce 1

Přednáška 4. Regulární výrazy. Filtry grep, sed a awk. Úvod do Operačních Systémů Přednáška 4

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

umenugr JEDNOTKA PRO VYTVÁŘENÍ UŽIVATELSKÝCH GRAFICKÝCH MENU Příručka uživatele a programátora

Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include <stdio.h>

X36UNX 16. Numerické výpočty v sh příkazy expr, bc, dc. Zdeněk Sojka

Proměnná a její uložení v paměti

Maturitní otázky z předmětu PROGRAMOVÁNÍ

SPJA, cvičení 1. ipython, python, skripty. základy syntaxe: základní datové typy, řetězce. podmínky: if-elif-else, vyhodnocení logických výrazů

Příkazová řádka. predn_02.odt :55:55 1

Algoritmizace a programování

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

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

1 OBECNÝ POPIS 2 3 ZÍSKÁNÍ VÝPISŮ Z INTERNETOVÉHO BANKOVNICTVÍ BANKY 4

Programování v jazyce JavaScript

Regulární výrazy. Filtry grep, sed a awk.

ALGORITMIZACE A PROGRAMOVÁNÍ

Počítačová simulace logistických procesů I. 11. přednáška Programování v SimTalk. ŠAVŠ, Fábry

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

Odvozené a strukturované typy dat

Aplikační vrstva. Úvod do Php. Ing. Martin Dostal

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

Skripty - úvod. Linux - skripty 2

BI-PA1 Programování a algoritmizace 1 Katedra teoretické informatiky

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

IAJCE Přednáška č. 6. logický celek, řešící dílčí část problému Příklad velmi špatného zápisu programu na výpočet obsahu obdélníku

Numerické výpočty, komprese a archivace, návratový kód.

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

MAXScript výukový kurz

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

Operátory. Základy programování 1 Tomáš Kühr

LabView jako programovací jazyk II

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku

5a. Makra Visual Basic pro Microsoft Escel. Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina

ČÍSELNÉ SOUSTAVY PŘEVODY

Práce s textovými proměnnými v DetStudiu

PELIKAN DANIEL - Definice CSV exportů

Vstupní požadavky, doporučení a metodické pokyny

PŘETĚŽOVÁNÍ OPERÁTORŮ

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

ŘÍDÍCÍ STRUKTURY - PODMÍNKY

Formátové specifikace formátovací řetězce

Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13

8. Laboratoř: Aritmetika a řídicí struktury programu

Příklad: Součet náhodných čísel ve vektoru s počtem prvků, které zadá uživatel, pomocí sum() a pomocí cyklu for. Ověříme, že příliš výpisů na

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

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

5 Přehled operátorů, příkazy, přetypování

dovolují dělení velkých úloh na menší = dekompozice

Racionální čísla, operátory, výrazy, knihovní funkce

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ů.

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

Chování mapování při exportu kót aplikace Revit do kót aplikace AutoCAD

Java reprezentace dat, výrazy. A0B36PR1-Programování 1 Fakulta elektrotechnická České vysoké učení technické

Racionální čísla, operátory, výrazy, knihovní funkce

Programování v C++ Úplnej úvod. Peta (maj@arcig.cz, SPR AG )

02. HODINA. 2.1 Typy souborů a objektů. 2.2 Ovládací prvky Label a TextBox

IUJCE 07/08 Přednáška č. 4. v paměti neexistuje. v paměti existuje

Výrazy, operace, příkazy

Ú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

Programování 2 (NMIN102) Soubory. RNDr. Michal Žemlička, Ph.D.

Lokální definice (1) plocha-kruhu

Inovace bakalářského studijního oboru Aplikovaná chemie

Regulární výrazy a grep

Transkript:

Rozšíření ksh vůči sh při práci s proměnnými (X36UNX, Jan Skalický, 2006) Pole homogenní lineární struktura implicitn ě s číselným rozsahem index ů 0...1023 (někde 4095) implicitn ě řetězcov ě orientovaná hodnota (jako obyčejné proměnné) definice: pole[index]=hodnota hromadná definice: set -A pole hodnota[0] hodnota[1]... pole=(hodnota[0] hodnota[1]... ) // bash, ksh (dle verze) // bash čtení položky: $pole[index] ${pole[index]} $pole // ŠPATN Ě (sémanticky) // SPRÁVN Ě (viz echo nebo print v ksh) <=> ${pole[0]}

hromadné čtení: ${pole[*]} ${pole[@]} ${pole[*]} ${pole[@]} ${#parameter[*]} ${#parameter} // substituce najednou //...po částech (bez úvozovek eqivalentní) // substituce do jednoho řetězce //...do více řetězc ů (pro parametrizaci) // počet obsazených (definovaných) buněk // délka řetězce (netýká se přímo polí) pole[0]=nula pole[1]=jednicka pole[2]= dvojka a trojka echo ${pole[*]} <=> nula jednicka dvojka a trojka echo ${pole[*]} <=> nula jednicka dvojka a trojka echo ${pole[@]} <=> nula jednicka dvojka a trojka echo ${#pole[*]} <=> 3 pozn.: je zvykem (nejen v ksh) psát globalní (exportované) proměnné velkými a lokální malými písmeny

Aritmetické výrazy expandované podobn ě jako sekce v uvozovkách celočíselná aritmetika formát číslel nejen v dekadické soustavě syntaxe: $[vyraz] // bash $(( vyraz )) // bash, ksh (( prirazeni )) /* bash, ksh; syntaxe C, není třeba $ před identifikátory, nehrozí kolize s metaznaky, může obsahovat mezery */ let promenna=vyraz // ksh; není třeba $, nesmí být mezera x=$(( x - 1 )) let x=x-1 <=> dekrementace x (bash, ksh) <=> dekrementace x (ksh)

Typy proměnným v ksh lze při definici explicitn ě přiřadit typ typy mají vliv na interpretaci proměnné syntaxe: typeset [ -HLRZfilrtux[n] ] [ name[=value ] ] // ksh L R Z t i l r t u x zarovnání (+ev. oříznutí) zleva (šířka n nebo 1. přiřazení) zarovnání zprava doplnění nulami zleva name se vztahuje k definovaným funkcím integer (rychlejší manipulace), n udává použitou soustavu lower-case (vstupní konverze) readonly => konstanta tag (generické použití), u funkcí má význam trasování upper-case automaticky exportované symboly pozn. + místo za typeset má inverzní účinek pozn. vynecháním name se zobrazí definované proměnné vyhovující přepínačům pozn. Integer se dá definovat tokenem integer (je to alias na typeset -i) pozn. Konstanta se dá definovat tokenem readonly (není to alias na typeset -r), ev. S přepínačem -p vypíše jejich seznam

Specialitky odřezávání prefix ů a sufix ů podle vzor ů: (vzor je vzor ve stylu shellu, nikoliv regexp) ${parameter#pattern} ${parameter##pattern} ${parameter%pattern} ${parameter%%pattern} // odř íznutí minimálního výskytu zleva // odříznutí maximálního výskytu zleva // odříznutí minimálního výskytu zprava // odříznutí maximálního výskytu zprava cesta=usr/local/bin/dosbox ${cesta##*/} <=> dosbox ${cesta%/*} <=> /usr/local/bin další, novější rozšíření závislá na konkrétním shellu: (u ksh na verzi, nap ř. KornShell93+) asociativní pole proměnných (možná syntaxe pole=[index]=hodnota) složené proměnné (struktura v C)(možná syntaxe osoba=jmeno=bohous) concat řetězcových proměnných v syntaxi otazka+=" $odpoved" nepřímé referencování proměnných v syntaxi nameref ref=prom => $ref manipuluje s $prom (nap ř. pro výstupní parametry funkcí)

Bonusy ksh/bash obsahují oproti sh navíc některé shellové proměnné: $SECONDS počet sekund od spuště ní shellu (časování skript ů) $ERRNO číslo poslední chyby $LINENO (readonly) aktuální řádek práv ě vykonávaného skriptu (užitečné nap ř. pro debugovací účely) $RANDOM (readonly) pseudonáhodné číslo z ntervalu <0, 32767> (přiřazení řetězce "seed" inicializuje generátor) $PPID (readonly) processid rodiče přehled speciálních proměnných shellu (i sh): $0 - $9 parametry příkazové ř ádky (ev. $argv[n]) $# počet parametr ů příkazové řádky $? návratový kód posledního procesu (decimální string) $$ PID shellu $! PID posledního procesu spuštěného na pozadí $- přepínače shellu $* parametry příkazové ř ádky (za sebou od indexu 1) $@ (rozdíl od $* v expanzi při použití uvozovek) $PWD, $IFS, $SHELL...