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 05:22 | Zajímavý článek

    Odpověď Evropské komise (pdf) k evropské občanské iniciativě Stop Destroying Videogames, jež je součástí hnutí Stop Killing Games: "Komise se domnívá, že v této fázi nemůže navrhnout právní povinnost zachovat hratelnost videoher poté, co přestaly být poskytovány komerčně. Důvodem jsou i stávající práva duševního vlastnictví. Podle autorského práva EU mají nositelé práv výlučná práva ke svým výtvorům. Kromě autorských práv mohou být

    … více »
    Ladislav Hagara | Komentářů: 1
    včera 16:11 | Nová verze

    Byl vydán Mozilla Firefox 152.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 152 bude brzy k dispozici také na Flathubu a Snapcraftu.

    Ladislav Hagara | Komentářů: 1
    včera 14:11 | Nová verze

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

    Ladislav Hagara | Komentářů: 5
    včera 11:44 | Komunita

    Hříčka xsnow, která na ploše spustí sněžení, je protestware. Pokud jste v Rusku (LANG=ru), zobrazuje ukrajinské vlajky.

    Ladislav Hagara | Komentářů: 24
    včera 11:11 | Nová verze

    UBports, nadace a komunita kolem Ubuntu pro telefony a tablety Ubuntu Touch, vydala beta verzi Ubuntu Touch 24.04-2.0. Nová verze již počítá s výřezy pro fotoaparát (notch) a zaoblenými rohy displeje. Webový prohlížeče Morph přešel z Chromia 87 na Chromium 134. Do shellu Lomiri byl přidán editor snímků obrazovky.

    Ladislav Hagara | Komentářů: 0
    včera 04:22 | Komunita

    V Praze probíhá Flock 2026, tj. konference pro přispěvatele a příznivce Fedory. Přednášky lze sledovat také na YouTube.

    Ladislav Hagara | Komentářů: 0
    včera 04:00 | Nová verze

    Node-RED (Wikipedie, GitHub), webová aplikace postavená na Node.js pro vizuální programování a propojování hardwarových zařízení, API a online služeb, byl vydán ve verzi 5.0. Přehled novinek v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    včera 02:00 | Nová verze

    Byla vydána nová verze 3.27.0 FreeRDP, tj. svobodné implementace protokolu RDP (Remote Desktop Protocol). Opraveno bylo 5 zranitelností.

    Ladislav Hagara | Komentářů: 0
    15.6. 23:11 | Komunita

    Řídící výbor GCC schválil záměr do GCC začlenit backend WebAssembly.

    Ladislav Hagara | Komentářů: 2
    14.6. 21:00 | Nová verze

    Po 9 týdnech vývoje od vydání Linuxu 7.0 oznámil Linus Torvalds vydání Linuxu 7.1. Přehled novinek a vylepšení na LWN.net: první a druhá polovina začleňovacího okna a časem také na Linux Kernel Newbies.

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


    Dotaz: Problém s načítáním souboru

    5.11.2012 21:12 VI5
    Problém s načítáním souboru
    Přečteno: 347×
    Hoj, snažím se načíst jednotlivé řádky ze souboru a uložit je do pole. Ať dělám co dělám, echo vypisuje stále 0. Nevidí někdo problém? Díky
    #!/bin/bash
    
    ARR=()
    
    cat /def/$FILE | while read LINE
    do
     ARR+=("$LINE")
    done
    
    echo ${#ARR[*]} 

    Odpovědi

    5.11.2012 21:47 l4m4
    Rozbalit Rozbalit vše Re: Problém s načítáním souboru
    Roura vytváří subshell, po jehož skončení samozřejmě zmizí i proměnná. Lze použít pouze přesměrování, nikoli rouru.
    5.11.2012 23:50 Delaunay | skóre: 17 | blog:
    Rozbalit Rozbalit vše Re: Problém s načítáním souboru
    Je třeba vyhnout se opakovanému spouštění subshellu a jak píše l4m4 - použít přesměrování.
    while read LINE
    do
     ARR+=("$LINE")
    done < /def/$FILE
    
    Případně lze využít i tuto syntaxi:
    for LINE in $(< /def/$FILE)
    do
     ARR=$((ARR+1))
    done
    
    Zde ale netuším, zda bash skutečně spouští subshell (ale jen jednou!) nebo zda-li využije přesměrování. Syntaxe spíše napovídá, že se interně spustí `cat /def/$FILE` a přesměruje standardní výstup.
    6.11.2012 00:22 Delaunay | skóre: 17 | blog:
    Rozbalit Rozbalit vše Re: Problém s načítáním souboru
    Vlastně i v Tvém příkladě se subshell spustí jen jednou. Ukončí se při uzavření roury (skončení cyklu).
    6.11.2012 12:57 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: Problém s načítáním souboru
    for LINE in $(< /def/$FILE)
    do
     ARR=$((ARR+1))
    done
    To je nějaký nesmysl, to nacpe všechny slova ze souboru do toho for-in bloku a ve výsledku to nedělá to, co má (nečte to po řádcích). Možná jste měl na mysli tuto syntaxi, která je podobná jako ta s pipe, ale je to bez pipe, tudíž se proměnné zachovají:
    while read LINE; do
    ARR=$((ARR+1))
    done < <(cat /def/$FILE)
    6.11.2012 13:35 Delaunay | skóre: 17 | blog:
    Rozbalit Rozbalit vše Re: Problém s načítáním souboru
    Ano, ta druhá varianta bude fungovat pouze tehdy, když na jednotlivých řádcích vstupu bude vždy jen jedno slovo. Nedošlo mi to, když jsem zkoušel napsat rychlejší variantu téhož. No nepovedlo se, ale díky za upozornění ;-).
    6.11.2012 14:27 Kit
    Rozbalit Rozbalit vše Re: Problém s načítáním souboru
    Hlavně je IMHO hloupost v bashi řešit podobné úlohy přes pole. Je potřeba opustit procedurální přístup a podívat se na celé zadání z jiného úhlu.
    7.11.2012 12:28 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
    Rozbalit Rozbalit vše Re: Problém s načítáním souboru
    bash na to má mapfile, stačí napsat
    mapfile -t ARR < /def/${FILE}
    
    Mimochodem, referenční příručka
    When your hammer is C++, everything begins to look like a thumb.
    7.11.2012 16:35 Kit
    Rozbalit Rozbalit vše Re: Problém s načítáním souboru
    Pěkná a rychlá vychytávka. Všiml jsem si, že má i alias readarray.

    Založit nové vláknoNahoru

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

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