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

Podobné dokumenty
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

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.

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

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

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

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

PROGRAMOVÁNÍ V SHELLU

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

Algoritmizace a programování

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

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

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

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

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

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

Programovací jazyk Pascal

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

ŘÍDÍCÍ STRUKTURY - PODMÍNKY

Základy operačního systému LINUX část III

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

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

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

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

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

Programování v jazyce JavaScript

Operátory. Základy programování 1 Martin Kauer (Tomáš Kühr)

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

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 programovacích jazyků (Java)

LEKCE 6. Operátory. V této lekci najdete:

Skripty - úvod. Linux - skripty 2

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

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

Zápis programu v jazyce C#

Základy programování Proměnné Procedury, funkce, události Operátory a podmínková logika Objekt Range a Cells, odkazy Vlastnosti, metody a události

Základní příkazy OS UNIX

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

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

Operátory, výrazy. Tomáš Pitner, upravil Marek Šabo

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

Jazyk C Program v jazyku C má následující strukturu: konstanty nebo proměnné musí Jednoduché datové typy: Strukturované datové typy Výrazy operátory

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

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

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

MQL4 COURSE. By Coders guru -4 Operace & Výrazy

Úvod do programování. Lekce 1

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

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

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

LabView jako programovací jazyk II

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

pi Ludolfovo číslo π = 3,14159 e Eulerovo číslo e = 2,71828 (lze spočítat jako exp(1)), např. je v Octave, v MATLABu tato konstanta e není

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

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

Operační systém UNIX

Bitové operátory a bitová pole. Úvod do programování 2 Tomáš Kühr

Výrazy a operátory. Operátory Unární - unární a unární + Např.: a +b

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

NPRG030 Programování I, 2010/11

- speciální symboly + - * / =., < > <> <= >= a další. Klíčová slova jsou chráněnými útvary, které nelze použít ve významu identifikátorů.

Algoritmizace a programování

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

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

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ů

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

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

Jazyk C# a platforma.net

NPRG030 Programování I, 2016/17 1 / :58:13

Ú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

Seznámení se shellem, textové editory numerické výpočty

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

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

Program grep. predn_05.doc

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

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

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

VÝRAZY výrazy = operandy prokládané operátory, vyhodnocované podle priority operátorů

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

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

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

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

Algoritmizace a programování

PRACUJEME S SHELLEM Ať žije BASH.

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

Proměnná. Datový typ. IAJCE Cvičení č. 3. Pojmenované místo v paměti sloužící pro uložení hodnoty.

CZ.1.07/1.5.00/

more Program se zastaví vždy po vypsání jedné stránky textu. Ukončení Ctrl+C less Umožňuje pohybovat se v souboru dopředu i dozadu.

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

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

2 Základní funkce a operátory V této kapitole se seznámíme s použitím funkce printf, probereme základní operátory a uvedeme nejdůležitější funkce.

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

DUM 06 téma: Tvorba makra pomocí VBA

X37SGS Signály a systémy

Programovací jazyk. - norma PASCAL (1974) - implementace Turbo Pascal, Borland Pascal FreePascal Object Pascal (Delphi)

Osnova přednášky. Informační a řídicí systémy I. Programování PLC II. IEC Program ve strukturovaném textu. Strukturovaný text (ST)

NPRG030 Programování I, 2018/19 1 / :25:37

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

- transpozice (odlišuje se od překlopení pro komplexní čísla) - překlopení matice pole podle hlavní diagonály, např.: A.' ans =

Sada 1 - Základy programování

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

Transkript:

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

Proměnné a parametry Jméno proměnné - identifikátor [a-za-z_][a-za-z_0-9]* Hodnota proměnné textový řetězec celočíselná hodnota - ne v sh Přesun proměnné do prostředí procesu export proměnná export proměnná=hodnota # ne v sh Pozor! u sh je třeba export opakovat po každé změně proměnné!! predn_08.odt 16.04.2007 14:00:38 2

Speciální proměnné shellu $0 jméno scriptu $1,...$9,${10}... parametry scriptu $* $1 $2 $3... $@ $1 $2 $3... "$*" "$1 $2 $3..." "$@" "$1" "$2" "$3"... $# počet parametrů $? návratový kód $- přepínače shellu $$ číslo aktivního procesu (PID) $! číslo procesu spuštěného na pozadí predn_08.odt 16.04.2007 14:00:38 3

Předdefinované proměnné shellu HOME IFS MAIL PATH PS1 PS2 ENV TMOUT SHELL domovský adresář oddělovač parametrů mailbox cesta k programům hlavní prompt pokračovací prompt jméno inicializačního souboru prodleva automatického odhlášení pokud není zadán příkaz cesta k interpetu příkazů predn_08.odt 16.04.2007 14:00:38 4

Nastavení hodnoty proměnné Přiřazovacím příkazem proměnná=hodnota Příklad: $ p1=abc $ p2=3 $ p3="a b c" $ p4=`date` $ p5=$(date) # jen ksh Načtením ze vstupu read seznam_proměnných Příklad: (vstup je a b c) $ read p1 # p1="a b c" $ read p1 p2 # p1=a p2="b c" $ read p1 p2 p3 # p1=a p2=b p3=c $ read p1 p2 p3 p4 # p1=a p2=b p3=c p4="" predn_08.odt 16.04.2007 14:00:38 5

Volání skriptu nebo funkce Nastavení hodnot parametrů Parametry ($1,..., $#) se nastavují při volání skriptu nebo funkce na hodnoty uvedené na příkazové řádce. Příkaz set set -- seznam_parametrů Rozdělení seznamu podle $IFS a přiřazení hodnoty do $1, $2,... Příklad: $ set -- a b c $ echo "\$1=$1, \$2=$2, \$3=$3" $1=a, $2=b, $3=c predn_08.odt 16.04.2007 14:00:38 6

Příkaz shift shift n shift # n=1 Posun hodnot parametrů vlevo - $1=$<1+n>, $2=$<2+n>,..., $#=$# - <n> Příkaz xargs xargs příkaz přepínače Volání příkazu s parametry zadanými na standardním vstupu. Příklad: $ find. xargs ls -ld drwxr-xr-x 3 honza staff 512 Nov 3 20:28. drwxr-xr-x 2 honza staff 512 Nov 5 12:50./awk -rwxr-xr-x 1 honza staff 226 Nov 5 12:53./awk/hanoi -rwxr-xr-x 1 honza staff 92 Nov 3 22:04./awk/t $??? V čem je rozdíl proti volání: find. -exec ls -ld {} \; predn_08.odt 16.04.2007 14:00:38 7

Příkaz getopts getopts definice_přepínačů proměnná Vyhledá první resp. další přepínač na příkazové řádce. Je-li obsažen v definici, nastaví ho do proměnné proměnná Je-li v definici následován dvojtečkou, přesune následující parametr do OPTARG V OPTIND shell udržuje číslo parametru (voláním shelluse nastaví OPTIND=1) Není-li přepínač nalezen v definici, je proměnná nastavena na hodnotu?. Začíná-li definice dvojtečkou, není hlášena chyba a neznámý přepínač je přesunut do OPTARG. V opačném případě je hlášena chyba a OPTARG není nastaveno. Příkaz getopts se obvykle volá v cyklu while. predn_08.odt 16.04.2007 14:00:38 8

Příklad: $ cat getopts.sh #!/bin/ksh if [ $# -eq 0 ]; then echo "volani $0 [+-]x [+-]y hodnota" exit 1 fi while getopts :xy: opt ; do case $opt in x) print "prepinac je: -x" ;; +x) print "prepinac je: +x" ;; y) print "parametr je: -y, hodnota je: $OPTARG" ;; +y) print "prepinac je: +y, hodnota je: $OPTARG" ;; \?) print "$OPTARG neni platna volba" ;; esac done $./getopts.sh -x +x -y yyy +y zzz -q prepinac je: -x prepinac je: +x parametr je: -y, hodnota je: yyy prepinac je: +y, hodnota je: zzz q neni platna volba predn_08.odt 16.04.2007 14:00:38 9

Hodnoty proměnných $proměnná ${proměnná} ${prom:-text} ${prom:=text} ${prom:?text} je-li $prom prázdné - vrací text jinak $prom je-li $prom prázdné, prom=text, vrací $prom je-li $prom prázdné, výpíše text a končí (exit) Zobrazení hodnot proměnných set výpis všech proměnných a jejich hodnot (včetně proměnných prostředí) env výpis pouze proměnných prostředí a jejich hodnot echo výpis argumentů print výpis argumentů - ne v sh predn_08.odt 16.04.2007 14:00:38 10

Příkaz echo echo seznam_argumentů Výpis argumentů oddělených mezerou Uvnitř " " lze použít: \b BS \c nedoplnit NL \f FF \n NL \r CR \t tab \\ \ Příkaz print - ne v sh print přepínače seznam_argumentů Jako echo, zabudovaný příkaz shellu Přepínače: -n nedoplnit NL predn_08.odt 16.04.2007 14:00:38 11

Práce s textovými řetězci Příkazy basename a dirname basename řetězec vrací část řetězce za posledním lomítkem dirname řetězec vrací vše z řetězce kromě posledního lomítka a textu za ním Příklad: $ echo "Dir=`dirname a/b`, Base=`basename a/b`" Dir=a, Base=b Příkaz printf printf format seznam_parametru Výpis hodnot podle zadaného formátu (viz awk resp. nawk) Příklad: $ A=a; I=1 $ printf "A=%-3s I=%3i\n" "$A" "$I" A=a I= 1 predn_08.odt 16.04.2007 14:00:38 12

Příkaz tput Vyzvednutí řetězce na provedení nějaké akce s terminálem z terminfo databáze. tput vlastnost_z_terminfo Příklad $ tput clear #vymaz obrazovky $ tput init #inicializace terminalu $ bold=`tput smso` $ offbold=`tput rmso` $ echo "Please type in your ${bold}name: ${offbold}\c" Please type in your name: $ predn_08.odt 16.04.2007 14:00:38 13

Práce s textovými řetězci - jen ksh ${prom#vzor} ${prom##vzor} ${prom%vzor} ${prom%%vzor} Příklad: $ p1="/a/b/c" $ echo ${p1#*/} a/b/c $ echo ${p1##*/} c $ echo ${p1%/*} /a/b $ echo ${p1%%/*} řetězec následující za 1. výskytem vzoru za posledním výskytem vzoru řetězec předcházející poslednímu výskytu vzoru prvnímu výskytu vzoru $ predn_08.odt 16.04.2007 14:00:38 14

Konstanty a celočíselné proměnné - jen ksh Definice konstanty typeset -r proměnná[=hodnota] V ksh je implicitně nadefinován alias readonly="typeset -r" lze proto také psát readonly proměnná[=hodnota] Přiřazení do konstanty způsobí chybu Definice celočíselné proměnné typeset -i proměnná[=číselná_hodnota] V ksh je implicitně nadefinován alias integer="typeset -i" lze proto také psát integer proměnná=číselná_hodnota Přiřazení textového řetězce do celočíselné proměnné způsobí chybu predn_08.odt 16.04.2007 14:00:38 15

Nastavení báze pro výpis - jen ksh Bázi pro výpis proměnné příkazy print a echo lze nastavit příkazem v rozsahu 2.. 32: typeset -i<báze> proměnná Příklad: $ integer p1=10 $ echo $p1 10 $ typeset -i8 p1 $ echo $p1 8#12 $ typeset -i2 p1 $ echo $p1 2#1010 $ predn_08.odt 16.04.2007 14:00:38 16

Celočíselná aritmetika v sh Příkaz expr Zašle na standardní výstup vyhodnocení výrazu uvedeného jako argumenty. Argumenty (operandy a operátory) musí býtodděleny alespoň 1 mezerou, pozor na kolizi s metaznaky shelu. Výrazy se vyhodnocují podle priorit (dále uvedeny se vzrůstající prioritou), výrazy se stejnou prioritou se vyhodnocují zleva (uvedeny ve složených závorkách): v1 \ v2 v1, je-li různé od 0 resp.prázdnéhořetězu (""), jinak v2 v1 \& v2 v1, jsou-li v1 i v2 různé od 0 resp. "", jinak 0 v1 {=,\>,\>=,\<,\<=,!=} v2 vrací 1, je-li relace (číselná nebo řetězová) splněna, jinak 0 v1 {+,-} v2 v1 {\*,/,%} v2 v1 : regexp sčítání nebo odčítání násobení, dělení, zbytek po dělení délka srovnání regexp s v1 predn_08.odt 16.04.2007 14:00:38 17

Příklad: $I=`expr $I + 1` let proměnná=výraz nebo ((proměnná=výraz)) Celočíselná aritmetika - ksh Operandy a operátory ve výrazu se nemusí oddělovat mezerou. Nehrozí kolize s metaznaky shellu. Proměnné ve výrazu se automaticky nahrazují hodnotou (netřeba používat $) Operátory : +, -, *, /, ( ) % modulo # base <<, >> bitové posuny vlevo a vpravo &,, ^ bitové and, or, xor predn_08.odt 16.04.2007 14:00:38 18

Pole - jen ksh - jednorozměrná - index je číslo nebo celočíselná proměnná (bez $), rozsah 0-4095 Přiřazení hodnoty: proměnná[index]=hodnota Hodnota položky: ${proměnná[index]} Hodnota všech položek ${proměnná[*]} Počet použitých položek ${#proměnná[*]} predn_08.odt 16.04.2007 14:00:38 19