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 12:55 | Nová verze

    Grafická aplikace Krokiet/Czkawka pro vyhledávání a odstraňovaní nepotřebných souborů (duplicitní soubory, prázdné složky, podobné obrázky, podobná videa, poškozené soubory a další) byla vydána ve verzi 12.0.0. Podrobný přehled novinek v příspěvku na Medium. Jedná se o poslední verzi frontendu Czkawka GTK nad Czkawka Core. Uživatelům se doporučuje migrovat na frontend Krokiet postavený nad frameworkem Slint. Představena byla aplikace Cedinia pro Android využívající Czkawka Core. Dostupná je jako APK pro ruční instalaci.

    Ladislav Hagara | Komentářů: 3
    dnes 04:22 | Nová verze

    Po téměř třech letech od vydání verze 9 byla vydána nová verze 10 linuxové distribuce Mageia (Wikipedie). Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    včera 04:00 | Zajímavý software

    Nourish (GitHub) je nový správce oken pro Linux. Tradiční plochy nahrazuje nekonečným plátnem a posouváním a přibližováním. Využívá vlastní kompozitor pro Wayland s názvem y5. Videoukázka.

    Ladislav Hagara | Komentářů: 5
    27.6. 15:33 | Komunita

    Po 20 letech a 17 otevřených (open source) krátkých filmech Blender Studio oznámilo plán na svůj první celovečerní film. Cílem samozřejmě není jenom nový otevřený film, ale především vývoj a vylepšení otevřených nástrojů pro spolupráci napříč celým procesem a vytvoření otevřené příručky (playbook) pro filmovou produkci ve velkém měřítku s informacemi, které jsou obvykle dostupné pouze uvnitř komerčních studií, a pomoci tak nezávislým tvůrcům překonat technické a organizační bariéry.

    Ladislav Hagara | Komentářů: 0
    27.6. 05:00 | Nová verze

    Byla vydána nová verze 26.6.25 svobodného multiplatformního video editoru Shotcut (Wikipedie) postaveného nad multimediálním frameworkem MLT. Shotcut je vedle zdrojových kódů k dispozici také ve formátech AppImage, Flatpak a Snap.

    Ladislav Hagara | Komentářů: 0
    26.6. 14:44 | IT novinky

    Apple bez varování odstranil ze svého obchodu sociální síť VKontaktě i další aplikace skupiny VK, jako je VK Music nebo VK Video [Novinky.cz].

    Ladislav Hagara | Komentářů: 18
    26.6. 14:22 | IT novinky

    V dubnu loňského roku představený poštovní klient Notion Mail bude 22. září ukončen.

    Ladislav Hagara | Komentářů: 3
    26.6. 04:33 | Komunita

    Konference OpenAlt 2026 hledá přednášející. Proběhne o víkendu 7. a 8. listopadu na půdě Fakulty informačních technologií VUT v Brně. Témata konference jsou: Otevřený a svobodný software, IoT a Hnutí tvůrců, Vzdělávání, Bezpečnost a soukromí, Otevřená společnost, komunity a data, OpenMobility a další.

    Ladislav Hagara | Komentářů: 0
    26.6. 04:22 | IT novinky

    Společnosti OpenAI a Broadcom oznámily čip optimalizovaný pro AI pojmenovaný Jalapeño.

    Ladislav Hagara | Komentářů: 0
    25.6. 20:22 | Nová verze

    Deno (Wikipedie), běhové prostředí (runtime) pro JavaScript, TypeScript a WebAssembly, bylo vydáno v nové verzi 2.9. Hlavní novinkou je deno desktop pro převod Deno projektu na desktopovou aplikaci. Jedná se o alternativu k frameworkům Electron nebo Tauri.

    Ladislav Hagara | Komentářů: 2
    Které desktopové prostředí na Linuxu používáte?
     (11%)
     (7%)
     (2%)
     (17%)
     (31%)
     (4%)
     (6%)
     (2%)
     (16%)
     (26%)
    Celkem 2009 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník


    BASH - IV

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

    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 ITBiz: Umělá inteligence neumí počítat (na obrázcích)
    Týden na ScienceMag.cz: Umělá inteligence šokovala matematiky, vyřešila Erdősův problém
    Týden na ITBiz: Obchod s technologiemi pro umělou inteligenci za deset let zdvojnásobil objem, dominuje mu Asie

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

      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.