abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 16:55 | Nová verze

    Český LibreOffice tým vydává překlad příručky LibreOffice Math 24.8. Math je modul editoru vzorců v kancelářském balíku LibreOffice a poskytuje možnosti rozvržení pro zobrazení matematických, chemických, elektrických nebo vědeckých vzorců ve standardní písemné notaci. Příručka je ke stažení na stránce dokumentace.

    ZCR | Komentářů: 0
    dnes 05:11 | Zajímavý článek

    Společnost Backblaze zveřejnila statistiky spolehlivosti pevných disků používaných ve svých datových centrech za rok 2024. Ke konci roku 2024 vlastnila 305 180 pevných disků. Průměrná AFR (Annualized Failure Rate), tj. pravděpodobnost, že disk během roku selže, byla 1,57 %. V roce 2023 to bylo 1,70 %. V roce 2022 to bylo 1,37 %.

    Ladislav Hagara | Komentářů: 6
    dnes 04:22 | Bezpečnostní upozornění

    Intel vydal 34 upozornění na bezpečnostní chyby ve svých produktech. Současně vydal verzi 20250211 mikrokódů pro své procesory řešící 5 bezpečnostních chyb.

    Ladislav Hagara | Komentářů: 0
    dnes 03:11 | Nová verze

    Byla vydána nová verze 1.24 programovacího jazyka Go (Wikipedie). Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    včera 19:44 | Komunita

    Jiří Eischmann upozorňuje, že GNOME nemá české překladatele: "Posledních minimálně 15 let byly překlady GNOME do češtiny ve výborném stavu. U každého vydání jsem jen hlásil, že je vše přeložené, poslední roky to platilo i pro drtivou většinu dokumentace. Poslední rok se to ale začalo zadrhávat. Přispěvatelé, kteří to dlouhé roky táhli, odešli a není nikdo, kdo by to po nich převzal. Proto jsme se rozhodli jít s pravdou ven: GNOME momentálně nemá české překladatele a pokud se toho neujme někdo nový, překlady začnou postupně upadat."

    Ladislav Hagara | Komentářů: 47
    včera 19:22 | Nová verze

    Otevřený zvukový bezztrátový kodek FLAC (Free Lossless Audio Codec, Wikipedie) byl vydán v nové verzi 1.5.0. Hlavní novinkou je podpora vícevláknového kódování. V prosinci loňského roku byl FLAC formálně specifikován v RFC 9639.

    Ladislav Hagara | Komentářů: 7
    včera 15:11 | IT novinky

    Evropská unie hodlá iniciovat investice do rozvoje umělé inteligence v hodnotě 200 miliard eur, v přepočtu zhruba pět bilionů korun. V projevu na summitu o umělé inteligenci v Paříži to v úterý řekla předsedkyně Evropské komise Ursula von der Leyenová. Umělá inteligence podle ní může přispět mimo jiné ke zvýšení konkurenceschopnosti.

    Ladislav Hagara | Komentářů: 25
    včera 13:00 | Nová verze

    Desktopové prostředí KDE Plasma bylo vydáno ve verzi 6.3 (Mastodon). Přehled novinek i s videi a se snímky obrazovky v oficiálním oznámení. Podrobný přehled v seznamu změn.

    Ladislav Hagara | Komentářů: 3
    včera 04:11 | Komunita

    Lennart Poettering se na Mastodonu rozepsal o novince v systemd, na které pracuje: systemd bude umět nabootovat z obrazu disku staženého pomocí HTTP v rámci initrd.

    Ladislav Hagara | Komentářů: 17
    10.2. 21:44 | Nová verze

    Open source platforma Home Assistant (Demo, GitHub, Wikipedie) pro monitorování a řízení inteligentní domácnosti byla vydána ve verzi 2025.2. Nově lze zálohovat také na Google Drive a Microsoft OneDrive.

    Ladislav Hagara | Komentářů: 0
    Rozcestník

    BASH - IV

    14. 11. 2003 | Jan Fuchs | Návody | 64103×

    V dnešní části seriálu si ukážeme, jak získat hodnoty argumentů předaných skriptu a také použití funkcí a příkazů.

    Obsah jednotlivých dílů

    1. Úvod, editace příkazové řádky
    2. Základní příkazy, roury a přesměrování
    3. Proměnné, podmínky a cykly
    4. Funkce a příkazy
    5. Dokumenty here, regulární výrazy
    6. Ladění skriptů, odchytávání signálů a příklady

    Informace o názvu skriptu, počtu předaných argumentů a argumenty samotné jsou uloženy ve speciálních proměnných.

    • $0 - název skriptu
    • $# - počet předaných argumentů
    • $IFS - seznam znaků, který je použit k oddělování slov atp., např. když shell čte vstup
    • $1$9 - první až devátý argument předaný skriptu
    • ${n} - libovolný n-tý argument předaný skriptu
    • $* - obsahuje všechny argumenty oddělené prvním znakem z $IFS
    • $@ - jako předchozí, ale k oddělení se nepoužívá první znak z $IFS

    Skript argumenty.sh nám poslouží jako ukázka.

    #!/bin/bash

    echo "Název skriptu: $0"
    echo "Počet argumentů: $#"
    echo "Všechny argumenty: $@"
    echo "První argument: $1"
    echo "Desátý argument: ${10}"

    exit 0

    Nyní skript spustíme s 10 argumenty.

    $ ./argumenty.sh jedna dva tři čtyři pět šest sedm osm devět deset
    Název skriptu: ./argumenty.sh
    Počet argumentů: 10
    Všechny argumenty: jedna dva tři čtyři pět šest sedm osm devět deset
    První argument: jedna
    Desátý argument: deset

    Funkce

    Provádění funkcí je mnohem rychlejší než provádění skriptů, protože funkce si shell udržuje trvale předzpracované v paměti. Funkce musí být definována dříve než bude použita. Příkaz export lze použít i pro funkce, ale musí být zapnutý mód allexport.

    $ set -o allexport
    $ prvni_funkce() {
    > echo "Jsem první funkce a vypisuji text"
    > }
    $ export prvni_funkce
    $ prvni_funkce
    Jsem první funkce a vypisuji text
    $ bash
    $ prvni_funkce
    Jsem první funkce a vypisuji text

    Funkcím můžeme předávat argumenty stejně jako skriptům a získáváme je stejným způsobem jako u skriptů. Příkaz return ukončí funkci a vrací její návratovou hodnotu ve formě celočíselného argumentu. Po dokončení funkce jsou poziční argumenty skriptu ($#, $@ ...) obnoveny (u starších shellů to tak být nemusí).

    $ funkce_s_argumenty() {
    > echo "Počet argumentů: $#"
    > echo "Všechny argumenty: $@"
    > echo "První argument: $1"
    > return 0
    > }
    $ funkce_s_argumenty první druhý
    Počet argumentů: 2
    Všechny argumenty: první druhý
    První argument: první

    Budeme-li chtít vrátit řetězcovou hodnotu, můžeme to udělat např. níže uvedeným způsobem.

    #!/bin/bash
    
    vrat_retezec() {
      echo "Řetězec"
    }
    
    promena=$(vrat_retezec)
    echo $promena
    
    exit 0
    

    Pomocí klíčového slova local můžeme také vytvořit lokální proměnné funkce. Jestliže bude existovat globální proměnná se stejným názvem, bude ve funkci potlačena.

    #!/bin/bash
    
    jedna="První globální proměnná"
    dva="Druhá globální proměnná"
    
    lokalni_promena() {
      local jedna="První lokální proměnná"
    
      echo $jedna
      echo $dva
    }
    
    lokalni_promena
    
    echo $jedna
    echo $dva
    
    exit 0
    

    Příkazy

    Příkazy můžeme rozdělit na zabudované a normální. Zabudované příkazy nemůžeme spustit jako externí programy, ale většinou mají své ekvivalenty ve formě externích programů. Normální příkazy jsou externí programy a jejich vykonání je pomalejší než u zabudovaných příkazů.

    • break - vyskočí z cyklu
    • : - nulový příkaz
    • continue - spustí další iteraci cyklu
    • . - provede příkaz v aktuálním shellu
    • eval - vyhodnotí zadaný výraz
    • shift - posune poziční parametry
    • read - načte uživatelský vstup, jako argument se použije název proměnné, do které se má uložit
    • stty - mění a vypisuje charakteristiky terminálové linky
    • exec - spustí nový shell nebo jiný zadaný program a nebo upraví deskriptor souboru
    • exit n - ukončení skriptu s návratovým kódem n (n = 0 - úspěšné ukončení, n = 1 až 125 - chyba, ostatní n jsou rezervovány)
    • printf - není dostupný ve starých shellech a při vytváření formátovaného výstupu byste mu měli dávat přednost před příkazem echo podle specifikace X/Open

    Na skriptu prikazy.sh si ukážeme použití některých výše uvedených příkazů.

    #!/bin/bash
    
    for i in 10 20 30 40 50; do
      if [ $i -eq 40 ]; then
        break
      elif  [ $i -eq 20 ]; then
        continue
      else
        :
      fi
      echo $i
    done
    
    a="abc"
    nazev_promene="a"
    
    promena='$'$nazev_promene
    echo $promena
    
    eval promena='$'$nazev_promene
    echo $promena
    
    while [ "$1" ]; do
      echo $1
      shift
    done
    
    exec date
    
    echo "Tato část již nebude provedena!"
    
    exit 0
    

    Nezapomeneme skript spustit s několika argumenty.

    $ ./prikazy.sh první druhý třetí
    10
    30
    $a
    abc
    první
    druhý
    třetí
    St říj 22 16:08:36 CEST 2003

    Nyní si ukážeme interaktivní skript read.sh, který požádá uživatele o zadání přihlašovacího jména a hesla. Heslo se nebude vypisovat na obrazovku.

    #!/bin/bash
    
    echo -n "Přihlašovací jméno: "
    read jmeno
    
    echo -n "Heslo: "
    
    # Vypne výpis vstupních znaků
    stty -echo
    
    read heslo
    
    # Zapne výpis vstupních
    stty echo
    echo
    
    if [ "$jmeno" == "fuky" ] && [ "$heslo" == "heslo" ]; then
      echo "Kód: Příšerně žluťoučký kůň úpěl ďábelské ódy"
    else
      echo "Nemáte oprávnění k vypsání kódu"
    fi
    
    exit 0
    

    Zadáme-li správné údaje, získáme kód.

    $ ./read.sh
    Přihlašovací jméno: fuky
    Heslo:
    Kód: Příšerně žluťoučký kůň úpěl ďábelské ódy

    Na závěr tohoto dílu si ukážeme použití konstrukce
    select proměnná in hodnota1 ... hodnotaN; do příkazy; done.

    #!/bin/bash
    
    echo "Zadejte vaše pohlaví"
    
    select pohlavi in muž žena; do
      if [ "$pohlavi" ]; then
        echo "Jste $pohlavi"
        break
      else
        echo "$REPLY je nedefinovaná odpověď"
      fi
    done
    
    exit 0
    

    Po spuštění příkazu select je uživatel vyzván, aby zadal číslo jedné z hodnot (hodnota1 ... hodnotaN v našem případě muž nebo žena). proměnná $REPLY obsahuje vždy hodnotu uživatelského vstupu. proměnná $pohlavi obsahuje hodnotu pouze v případě, že číslo odpovídá jedné z voleb. Dotaz se opakuje, dokud se neprovede v těle příkaz break.

    $ ./select.sh
    Zadejte vaše pohlaví
    1) muž
    2) žena
    #? 3
    3 je nedefinovaná odpověď
    1) muž
    2) žena
    #? 1
    Jste muž

    Nejčtenější články posledního měsíce

    Týden na ScienceMag.cz: Relativistický elektronový paprsek by mohl dostat sondu k Alfa Centauri za 40 let
    Událo se v týdnu 3/2025
    Jaderné noviny – přehled za prosinec 2024

    Nejkomentovanější články posledního měsíce

    Týden na ITBiz: USA omezí vývoz čipů v oblasti AI, dotkne se to i Česka
    Jaderné noviny – přehled za leden 2025
      všechny statistiky »

    Seriál BASH (dílů: 6)

    BASH - I (první díl)
    <—« BASH - III
    »—> BASH - V
    BASH - VI (poslední díl)

    Související články

    BASH - I (Úvod, editace příkazové řádky)
    BASH - II (Základní příkazy, roury a přesměrování)
    BASH - III (Proměnné, podmínky a cykly)
    BASH - V (Dokumenty here, regulární výrazy)
    BASH - VI (Ladění skriptů, odchytávání signálů a příklady)

    Odkazy a zdroje

    BASH - GNU Project

    Další články z této rubriky

    VDR a DVB-T2, část 2.
    VDR a DVB-T2, část 1.
    Šifrovaný Proxmox VE 6: ZFS, LUKS, systemd_boot a Dropbear
    MapTiler – proměňte obrázek v zoomovatelnou mapu
    Syncthing
           

    Hodnocení: 39 %

            špatnédobré        

    Nástroje: Tisk bez diskuse

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.