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 13:33 | IT novinky

    O zavedení nástroje na monitorování online konverzací v rámci boje proti dětské pornografii (tzv. Chat Control) měli ministři vnitra rozhodovat na úterním společném zasedání v Lucemburku. Plán dánského předsednictví Rady EU ale před pár dny ztroskotal, když se ukázalo, že Chat Control nemá dostatečnou podporu.

    Ladislav Hagara | Komentářů: 0
    dnes 13:11 | Pozvánky

    Již toto úterý proběhne každoměsíční akce Virtuální Bastlírna, kterou pořádá projekt MacGyver. Jde o virtuální posezení u piva a volné klábosení o různých zajímavostech ze světa elektroniky, softwaru i techniky. V posledním měsíci se stalo nemálo zajímavostí týkajících se spousty bastlířů - kupříkladu Arduino nyní patří pod Qualcomm, Raspberry Pi vydalo nový počítač, ale potichu i miniaturní compute module. Pro AMS od Bambu Lab se

    … více »
    bkralik | Komentářů: 0
    dnes 11:22 | IT novinky

    Google zpřístupňuje své AI nástroje českým univerzitním studentům prostřednictvím předplatného Google AI Pro na 12 měsíců bez poplatku. Platnost nabídky vyprší 9. prosince 2025.

    Ladislav Hagara | Komentářů: 0
    dnes 10:55 | Zajímavý projekt

    MicroPythonOS je operační systém napsaný v MicroPythonu určený především pro mikrokontroléry jako ESP32. Zdrojové kódy jsou k dispozici na GitHubu.

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

    Byl vydán LineageOS 23 (Mastodon). LineageOS (Wikipedie) je svobodný operační systém pro chytré telefony, tablety a set-top boxy založený na Androidu. Jedná se o nástupce CyanogenModu. LineageOS 23 je založený na Androidu 16.

    Ladislav Hagara | Komentářů: 0
    11.10. 15:33 | Komunita

    Na YouTube byly zveřejněny videozáznamy přednášek z hackerské konference DEF CON 33, jež proběhla 7. až 10. srpna v Las Vegas.

    Ladislav Hagara | Komentářů: 0
    11.10. 05:33 | Nová verze

    Bun (Wikipedie), tj. běhové prostředí (runtime) a toolkit pro JavaScript a TypeScript, alternativa k Node.js a Deno, byl vydán ve verzi 1.3. Představení novinek také na YouTube. Bun je naprogramován v programovacím jazyce Zig.

    Ladislav Hagara | Komentářů: 2
    10.10. 14:22 | IT novinky

    V Lucemburku byly oznámeny výsledky posledního kola výzev na evropské továrny pro umělou inteligenci neboli AI Factories. Mezi úspěšné žadatele patří i Česká republika, potažmo konsorcium šesti partnerů vedené VŠB – Technickou univerzitou Ostrava. V rámci Czech AI Factory (CZAI), jak se česká AI továrna jmenuje, bude pořízen velmi výkonný superpočítač pro AI výpočty a vznikne balíček služeb poskytovaný odborníky konsorcia. Obojí bude sloužit malým a středním podnikům, průmyslu i institucím veřejného a výzkumného sektoru.

    Ladislav Hagara | Komentářů: 19
    10.10. 01:22 | Nová verze

    Byla vydána (𝕏) zářijová aktualizace aneb nová verze 1.105 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.105 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.

    Ladislav Hagara | Komentářů: 0
    9.10. 15:33 | Komunita

    Ve Firefoxu bude lepší správa profilů (oddělené nastavení domovské stránky, nastavení lišt, instalace rozšíření, uložení hesla, přidání záložky atd.). Nový grafický správce profilů bude postupně zaváděn od 14.října.

    Ladislav Hagara | Komentářů: 3
    Jaké řešení používáte k vývoji / práci?
     (38%)
     (46%)
     (17%)
     (18%)
     (22%)
     (16%)
     (18%)
     (16%)
     (16%)
    Celkem 212 hlasů
     Komentářů: 13, poslední 8.10. 07:41
    Rozcestník

    Dotaz: bash pole - ako pridat polozku do pola z while cyklu?

    24.10.2022 11:18 gsnak | skóre: 22 | blog: gsnak
    bash pole - ako pridat polozku do pola z while cyklu?
    Přečteno: 413×
    Chcem v bash-i pridat hodnotu do pola, ale pretoze som vo while "podprograme" tak to nefunguje:
    myArray=("cat" "dog" "mouse" "frog")
    A=("a" "b" "c")
    A+=("d")
    ls *.mp3 | sort -R | while read i; do
        A+=( "$i" );
        echo $i
    done
    for i in ${A[@]}; do
        echo "--- $i"
    done
    
    Vypise to len a b c d, nic z toho while cyklu.
    Čo Rys, to vrah!

    Řešení dotazu:


    Odpovědi

    24.10.2022 11:54 X
    Rozbalit Rozbalit vše Re: bash pole - ako pridat polozku do pola z while cyklu?
    Nefunguje to, protoze roura vytvari subshell:
    for i in $(ls *.mp3 | sort -R); do
            A+=("$i")
    done
    
    24.10.2022 12:50 gsnak | skóre: 22 | blog: gsnak
    Rozbalit Rozbalit vše Re: bash pole - ako pridat polozku do pola z while cyklu?
    Toto nefunguje spravne ak subory obsahuju medzery
    Čo Rys, to vrah!
    24.10.2022 13:06 X
    Rozbalit Rozbalit vše Re: bash pole - ako pridat polozku do pola z while cyklu?
    Muzes upravit IFS a nebo lepe odstranit mezery.
    24.10.2022 12:51 gsnak | skóre: 22 | blog: gsnak
    Rozbalit Rozbalit vše Re: bash pole - ako pridat polozku do pola z while cyklu?
    lebo for to cita po slovach nie po riadkoch, a ked pouzijem while tak to zase vytvara subshell
    Čo Rys, to vrah!
    24.10.2022 13:55 Milan Uhrák | skóre: 31 | blog: milan_at_ABC
    Rozbalit Rozbalit vše Re: bash pole - ako pridat polozku do pola z while cyklu?
    a není řešením ls -l ?
    24.10.2022 14:33 Milan Uhrák | skóre: 31 | blog: milan_at_ABC
    Rozbalit Rozbalit vše Re: bash pole - ako pridat polozku do pola z while cyklu?
    nebo ls -1 ... pardon

    ale mně to funguje s for smyčkou..

    jeden soubor to ale rozepisuje po slovech, a nevím proč má kolem názvu jednoduché uvozovky, takže universální to není..

    jinak je snadnější cesta files_in_dirs=(dir/* other_dir/*), ale to mi taky nefunguje na tom jednom souboru, taky to láme jéno na slova..

    M

    Řešení 1× (gsnak (tazatel))
    k3dAR avatar 24.10.2022 13:57 k3dAR | skóre: 63
    Rozbalit Rozbalit vše Re: bash pole - ako pridat polozku do pola z while cyklu?
    1. nedavej while za pipe, ale dodej mu to primo, jednak nastavi do promene, druhak poresi mezery
    2. u for smycky dej pole do uvozovek tim to nerozseka podle mezer, ale podle hodnot pole
    myArray=("cat" "dog" "mouse" "frog")
    A=("a" "b" "c")
    A+=("d")
    
    while read i; do
        A+=( "$i" );
        echo $i
    done < <(ls *.mp3 | sort -R)
    
    for i in "${A[@]}"; do
        echo "--- $i"
    done
    
    porad nemam telo, ale uz mam hlavu... nobody
    24.10.2022 14:38 Milan Uhrák | skóre: 31 | blog: milan_at_ABC
    Rozbalit Rozbalit vše Re: bash pole - ako pridat polozku do pola z while cyklu?
    Tohle funguje i s tím jedním souborem co má kolem názvu apostofy ... M
    24.10.2022 18:16 gsnak | skóre: 22 | blog: gsnak
    Rozbalit Rozbalit vše Re: bash pole - ako pridat polozku do pola z while cyklu?
    Nakoniec som pouzil toto:
    #!/bin/bash
    clear
    A=()
    while read i; do
        A+=( "$i" );
    done < <(ls *.mp3 | sort -R)
    for i in "${A[@]}"; do
        echo "$i"
        mplayer -really-quiet "$i" 2>/dev/null
    done
    Čo Rys, to vrah!
    Řešení 1× (Gréta)
    24.10.2022 15:17 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: bash pole - ako pridat polozku do pola z while cyklu?

    while není „podprogram“. (Existuje taky „nadprogram“?) Problém není while, nýbrž dýmka. Bez dýmky se dá z while přistupovat k proměnným.

    Mimochodem: Nikdy neparsuj výstup z ls.

    mp3s=()
    while IFS= read -r mp3; do
      mp3s+=("$mp3")
    done < <(for mp3 in *.mp3; do
               printf '%s\n' "$mp3"
             done | shuf)
    for i in "${!mp3s[@]}"; do
      printf '%u --- %s\n' "$i" "${mp3s[i]}"
    done
    
    24.10.2022 18:05 gsnak | skóre: 22 | blog: gsnak
    Rozbalit Rozbalit vše Re: bash pole - ako pridat polozku do pola z while cyklu?
    ./a.sh: line 4: syntax error near unexpected token `('
    ./a.sh: line 4: `done << (for mp3 in *.mp3; do'
    GNU bash, version 5.1.16(1)
    Čo Rys, to vrah!
    24.10.2022 18:43 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: bash pole - ako pridat polozku do pola z while cyklu?

    Kde přesně jsem napsal „<< (“? Nikde to v mém kódu nevidím.

    Doporučuji Copy&Paste; pomáhá to.

    xkucf03 avatar 24.10.2022 20:11 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: bash pole - ako pridat polozku do pola z while cyklu?

    Pokud nemáš k dipozici lepší formát, tak bych ty prvky oddělil nulovým bajtem:

    while read -d '' i; do A+=("$i"); done < <(find -maxdepth 1 -type f -name '*.mp3' -print0 | sort -zR)

    Protože v názvu souboru může být víceméně libovolná změť bajtů kromě nulového bajtu (mj. aby to mohl být céčkovský řetězec) a lomítka (protože to je oddělovač v cestě k souboru). Tzn. kromě mezer, uvozovek a apostrofů tam můžou být i znaky konce řádku. Což dokáže zavařit např. i bash-completion:

    $ touch "ko                         
    kos"
    $ ls -1
    'ko'$'\n''kos'
    $ rm ko<TAB>
    ko   kos  
    
    Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
    24.10.2022 23:42 tom
    Rozbalit Rozbalit vše Re: bash pole - ako pridat polozku do pola z while cyklu?
    Pouzitim escape sekvenci v nazvu souboru jde docilit mnohem zabavnejsiho chovani ruznych programu nez s obycejnym \n

    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.