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 19:00 | Nová verze

    Canonical vydal Ubuntu Core 26. Vychází z Ubuntu 26.04 LTS a podporováno bude 15 let. Ubuntu Core je minimální neměnný operační systém určený pro vestavěné systémy.

    Ladislav Hagara | Komentářů: 0
    dnes 16:22 | Nová verze

    Bylo vydáno OpenBSD 7.9. Po dlouhé době opět se songem: Diamond in the Rough.

    Ladislav Hagara | Komentářů: 0
    dnes 16:11 | IT novinky

    Dnes a zítra probíhá vývojářská konference Google I/O 2026. Sledovat lze na YouTube a na síti 𝕏 (#GoogleIO).

    Ladislav Hagara | Komentářů: 0
    dnes 16:00 | Nová verze

    Byl vydán Mozilla Firefox 151.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 151 bude brzy k dispozici také na Flathubu a Snapcraftu.

    Ladislav Hagara | Komentářů: 0
    dnes 12:22 | IT novinky

    Elon Musk prohrál soudní spor se společností OpenAI, která se podle jeho žaloby odchýlila od původně uváděného cíle vyvíjet umělou inteligenci (AI) ku prospěchu lidstva. Porota včera po necelých dvou hodinách dospěla k jednomyslnému závěru, že Musk žalobu podal příliš pozdě. Musk byl jedním ze spoluzakladatelů společnosti OpenAI, která vznikla v roce 2015 a vyvinula populární chatovací systém ChatGPT. V roce 2018 na svůj post ve vedení

    … více »
    Ladislav Hagara | Komentářů: 0
    dnes 10:22 | Nová verze

    Byla vydána nová verze 10.4 z Debianu vycházející linuxové distribuce DietPi pro (nejenom) jednodeskové počítače. Přehled novinek v poznámkách k vydání. Opraveny jsou zranitelnosti Copy Fail a Dirty Frag. Přibyl nový obraz pro Orange Pi 5B.

    Ladislav Hagara | Komentářů: 0
    dnes 07:44 | Zajímavý software

    Pokud je zranitelnost Linuxu v nepoužívaném jaderném modulu, lze ji jednoduše vyřešit zakázáním automatického načítání tohoto konkrétního zranitelného modulu. Projekt ModuleJail si klade za cíl zvýšit bezpečnost Linuxu zakázáním automatického načítání všech nepoužívaných jaderných modulů. Jedná se o skript, který dá všechny nepoužívané jaderné moduly na blacklist (/etc/modprobe.d/modulejail-blacklist.conf).

    Ladislav Hagara | Komentářů: 1
    včera 16:11 | Zajímavý článek

    Odborníci z Penn State University zkoumají způsob ukládání informací na lepicí pásku. Principiálně by podle nich bylo možné kombinací odlepení a zpětného přilepení dosáhnout uložení informace, kterou opětovným odlepením dokážou přečíst. Výhodou je, že způsob uložení i přečtení je čistě mechanický. Zde o tom referují ve volně dostupném článku. Zajímavé bude sledovat zda se jim v rámci výzkumu podaří prokázat použitelnost i v jiné než

    … více »
    karkar | Komentářů: 9
    včera 13:00 | Zajímavý projekt

    Na GitHubu byl publikován reprodukovatelný návod, jak rozchodit Adobe Lightroom CC na Linuxu a Wine. Návod byl vytvořený pomocí AI Claude Code.

    Ladislav Hagara | Komentářů: 0
    včera 12:33 | Humor

    Pokud by někdo potřeboval Wayland kompozitor uvnitř počítačové hry Minecraft, aby mohl zobrazovat okna desktopových aplikací přímo v herním prostředí, může sáhnout po Waylandcraftu. Ukázka na YouTube.

    Ladislav Hagara | Komentářů: 2
    Které desktopové prostředí na Linuxu používáte?
     (13%)
     (8%)
     (2%)
     (14%)
     (31%)
     (4%)
     (6%)
     (3%)
     (16%)
     (26%)
    Celkem 1664 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    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: 472×
    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× (MakeIranBombedAgain❗)
    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: 50 | 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.