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

    Desktopové prostředí LXQt (Lightweight Qt Desktop Environment, Wikipedie) vzniklé sloučením projektů Razor-qt a LXDE bylo vydáno ve verzi 2.5.0. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 1
    dnes 12:11 | Nová verze

    Byla vydána (𝕏) nová verze 8.0 LTS open source monitorovacího systému Zabbix (Wikipedie). Přehled novinek v oznámení na webu, v poznámkách k vydání a v aktualizované dokumentaci.

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

    Byla vydána verze R14.1.7 desktopového prostředí Trinity Desktop Environment (TDE, fork KDE 3.5, Wikipedie). Přehled novinek v poznámkách k vydání, podrobnosti v seznamu změn.

    JZD | Komentářů: 5
    dnes 00:33 | Nová verze

    Bazzite (Wikipedie), tj. linuxová distribuce vycházející z Fedora Linuxu a optimalizována pro hraní počítačových her, byla vydána ve verzi 45. S Open Gaming Collective (OGC) jádrem a novým Easy Anti-Cheatem pro Linux (EAC Linux v2).

    Ladislav Hagara | Komentářů: 0
    včera 22:11 | Bezpečnostní upozornění

    MikroTik zveřejnil vlastní bezpečnostní upozornění potvrzující, že zranitelnost linuxového jádra postihuje také RouterOS 7. Jde o use-after-free při zpracování IPv4 TCP spojení s IP options. Zranitelnost se týká provozu směřujícího na TCP službu samotného routeru, nikoli paketů, které router pouze přeposílá. Opraveno v long-term od 7.24.6, v stable od 7.25.1 a devel od 7.26beta5.

    vencour | Komentářů: 1
    včera 17:00 | Bezpečnostní upozornění

    Ve správci balíčků APT, používaném v Debianu a odvozených distribucích, byla nalezena a opravena kritická zranitelnost CVE-2026-109518. Vzdálený útočník může obejít ověření stažených balíčků pomocí přesměrování a dočasných chyb HTTP serveru.

    Ladislav Hagara | Komentářů: 2
    včera 13:11 | IT novinky

    Nejvyšší kontrolní úřad (NKÚ) vydal zprávu o finančním řízení prostředků EU v ČR (pdf). Dočíst se lze například, že přes 8 miliard korun na digitální vzdělávání nepřineslo naplnění žádného z prioritních cílů programu. Peněžní prostředky z fondů EU sice byly vynaloženy formálně v souladu s právními předpisy, avšak s minimálním nebo neprokazatelným dopadem na proklamované cíle ve vzdělávání. Na Metodickém portálu RVP.CZ bylo ke konci

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

    Emulátor terminálu kitty (Wikipedie, GitHub) byl vydán v nové verzi 0.50.

    Ladislav Hagara | Komentářů: 3
    včera 09:00 | Bezpečnostní upozornění

    Vývojáři C-Kermit oznámili několik dlouhodobě přítomných zranitelností. Patří mezi ně buffer overflow v Telnet/FTP klientovi a command injection v Kermit serveru. Dotčené verze: C-Kermit 11.0.514 a starší. Fix: 11.1.515 [oss-security].

    vencour | Komentářů: 0
    včera 02:44 | Nová verze

    Byla vydána nová verze 3.2.8 svobodné aplikace pro úpravu a vytváření rastrové grafiky GIMP (GNU Image Manipulation Program). Přehled novinek v oznámení o vydání a v souboru NEWS na GitLabu. Nový GIMP je již k dispozici také na Flathubu.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (9%)
     (7%)
     (4%)
     (21%)
     (30%)
     (9%)
     (5%)
     (2%)
     (14%)
     (20%)
    Celkem 2982 hlasů
     Komentářů: 34, poslední 26.10. 08:24
    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: 535×
    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× (👻)
    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ákno • Nahoru

    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.