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í
×
    včera 17:33 | Pozvánky

    Spolek OpenAlt zve příznivce otevřených řešení a přístupu na 211. sraz, který proběhne v pátek 19. září od 18:00 ve Studentském klubu U Kachničky na Fakultě informačních technologií Vysokého učení technického na adrese Božetěchova 2/1. Na srazu proběhne přednáška Jiřího Eischmanna o nové verzi prostředí GNOME 49. Nemáte-li možnost se zúčastnit osobně, přednáškový blok bude opět streamován živě na server VHSky.cz a následně i zpřístupněn záznam.

    Ladislav Hagara | Komentářů: 0
    včera 01:33 | IT novinky

    Microsoft se vyhnul pokutě od Evropské komise za zneužívání svého dominantního postavení na trhu v souvislosti s aplikací Teams. S komisí se dohodl na závazcích, které slíbil splnit. Unijní exekutivě se nelíbilo, že firma svazuje svůj nástroj pro chatování a videohovory Teams se sadou kancelářských programů Office. Microsoft nyní slíbil jasné oddělení aplikace od kancelářských nástrojů, jako jsou Word, Excel a Outlook. Na Microsoft si

    … více »
    Ladislav Hagara | Komentářů: 3
    12.9. 14:00 | Nová verze

    Samba (Wikipedie), svobodná implementace SMB a Active Directory, byla vydána ve verzi 4.23.0. Počínaje verzí Samba 4.23 jsou unixová rozšíření SMB3 ve výchozím nastavení povolena. Přidána byla podpora SMB3 přes QUIC. Nová utilita smb_prometheus_endpoint exportuje metriky ve formátu Prometheus.

    Ladislav Hagara | Komentářů: 0
    12.9. 12:00 | Zajímavý článek

    Správcovský tým repozitáře F-Droid pro Android sdílí doporučení, jak řešit žádosti o odstranění nelegálního obsahu. Základem je mít nastavené formální procesy, vyhrazenou e-mailovou adresu a být transparentní. Zdůrazňují také důležitost volby jurisdikce (F-Droid je v Nizozemsku).

    🇵🇸 | Komentářů: 20
    12.9. 05:33 | Bezpečnostní upozornění

    Byly publikovány informace o další zranitelnosti v procesorech. Nejnovější zranitelnost byla pojmenována VMScape (CVE-2025-40300, GitHub) a v upstream Linuxech je již opravena. Jedná se o variantu Spectre. KVM host může číst data z uživatelského prostoru hypervizoru, např. QEMU.

    Ladislav Hagara | Komentářů: 0
    11.9. 22:00 | Komunita

    V červenci loňského roku organizace Apache Software Foundation (ASF) oznámila, že se částečně přestane dopouštět kulturní apropriace a změní své logo. Dnes bylo nové logo představeno. "Indiánské pírko" bylo nahrazeno dubovým listem a text Apache Software Foundation zkratkou ASF. Slovo Apache se bude "zatím" dál používat. Oficiální název organizace zůstává Apache Software Foundation, stejně jako názvy projektů, například Apache HTTP Server.

    Ladislav Hagara | Komentářů: 14
    11.9. 17:33 | Nová verze

    Byla vydána (𝕏) srpnová aktualizace aneb nová verze 1.104 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.104 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.

    Ladislav Hagara | Komentářů: 1
    11.9. 15:33 | IT novinky

    Spotify spustilo přehrávání v bezztrátové kvalitě. V předplatném Spotify Premium.

    Ladislav Hagara | Komentářů: 0
    11.9. 15:00 | IT novinky

    Spoluzakladatel a předseda správní rady americké softwarové společnosti Oracle Larry Ellison vystřídal spoluzakladatele automobilky Tesla a dalších firem Elona Muska na postu nejbohatšího člověka světa. Hodnota Ellisonova majetku díky dnešnímu prudkému posílení ceny akcií Oraclu odpoledne vykazovala nárůst o více než 100 miliard dolarů a dosáhla 393 miliard USD (zhruba 8,2 bilionu Kč). Hodnota Muskova majetku činila zhruba 385 miliard dolarů.

    Ladislav Hagara | Komentářů: 7
    10.9. 21:22 | Nová verze

    Bylo vydáno Eclipse IDE 2025-09 aneb Eclipse 4.37. Představení novinek tohoto integrovaného vývojového prostředí také na YouTube.

    Ladislav Hagara | Komentářů: 0
    Pro otevření více webových stránek ve webovém prohlížečí používám
     (82%)
     (6%)
     (3%)
     (3%)
     (4%)
     (2%)
    Celkem 171 hlasů
     Komentářů: 12, poslední 10.9. 13:00
    Rozcestník

    Dotaz: Bash: načtení hodnot oddělených nulovým bajtem \0 do více proměnných

    xkucf03 avatar 15.12.2018 19:55 xkucf03 | skóre: 49 | blog: xkucf03
    Bash: načtení hodnot oddělených nulovým bajtem \0 do více proměnných
    Přečteno: 581×

    Potřeboval bych v cyklu načítat hodnoty oddělené nulovým bajtem do proměnných.

    Funguje mi tohle -- na každý řádek to vypíše jednu proměnnou:

    printf 'a\0b\0c\0d\0' | while read -d '' x; do echo ">$x<"; done
    (případně -d $'\0' se chová stejně)

    V dokumentaci se ale píše:

    -d oddělovač pokračuje, dokud není načten první znak ODDĚLOVAČE namísto nového řádku

    Takže pomocí -d to zjevně nepůjde udělat. Zkoušel jsem nastavovat $IFS, ale to nepomohlo. Tohle nefunguje:

    printf 'a\0b\0c\0d\0' | while IFS='' read x y; do echo ">$x< >$y<"; done
    printf 'a\0b\0c\0d\0' | while read -d ''  x y; do echo ">$x< >$y<"; done

    Potřeboval bych dosáhnout něčeho jako:

    printf 'a\0b\0c\0d' | xargs -0 -n2 echo

    Tzn. ze vstupu se vezmou dva prvky a ty se zpracují jedním příkazem. Ale chci to mít ve while cyklu, abych tam mohl napsat blok kódu. Proběhly by dva cykly a v každém bych měl naplněné dvě proměnné.

    Jde toho nějak dosáhnout pomocí read nebo jiného příkazu? Ano, můžu si to napsat v C jako Bash built-in příkaz :-) ale tohle snad už musel někdo řešit, ne?

    P.S. pak je ještě problém, že bez koncového \0 načte read jen tři prvky a čtvrtý zahodí, ale to je relativně detail, mohl bych na konec přidávat \0, i když lepší by bylo, aby to bralo i EOF.

    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

    Řešení dotazu:


    Odpovědi

    15.12.2018 20:14 Kit | skóre: 46 | Brno
    Rozbalit Rozbalit vše Re: Bash: načtení hodnot oddělených nulovým bajtem \0 do více proměnných
    Zkusil bych pokračovat v tom, co jsi už nakousnul.
    printf 'a\0b\0c\0d' | xargs -0 -n2 echo | while read x y; do echo "$x" "$y"; done
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    xkucf03 avatar 15.12.2018 20:22 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Bash: načtení hodnot oddělených nulovým bajtem \0 do více proměnných

    O tomhle vím (resp. jde to jednodušeji i přes tr \\0 \\n), ale problém je v tom, že když hodnota bude obsahovat znak konce řádku, tak se to rozbije. Proto právě chci pracovat s těmi nulovými bajty, aby tam jinak kromě nich mohlo být cokoli.

    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
    15.12.2018 20:49 Kit | skóre: 46 | Brno
    Rozbalit Rozbalit vše Re: Bash: načtení hodnot oddělených nulovým bajtem \0 do více proměnných
    Co takhle místo příkazu echo zavolat skript? Dostane ty dva parametry.
    Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
    15.12.2018 21:38 debian+
    Rozbalit Rozbalit vše Re: Bash: načtení hodnot oddělených nulovým bajtem \0 do více proměnných
    Co tak nacitat vstup do pola a nasledne data spracovat ako pole.
    17.12.2018 12:00 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Bash: načtení hodnot oddělených nulovým bajtem \0 do více proměnných

    No, do jednoho pole asi ne, protože co když má vstup 10 EB…

    Každopádně se dá vstup postupně načítat do polí se dvěma prvky.

    xkucf03 avatar 16.12.2018 00:34 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Bash: načtení hodnot oddělených nulovým bajtem \0 do více proměnných

    Tak jsem to už skoro vyřešil :-)

    Definuji si funkci:

    read_zero() { for v in "$@"; do export $v; read -r -d $'\0' $v; done }

    a následně ji použiji místo read:

    printf 'a\0b\0c\0d\0' | while read_zero x y; do echo ">$x< >$y<"; done

    Jediný problém je, že za poslední hodnotou musí být \0.

    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
    xkucf03 avatar 16.12.2018 01:06 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Bash: načtení hodnot oddělených nulovým bajtem \0 do více proměnných

    Tak se mi pravděpodobně povedlo vyřešit i ten poslední problém:

    read_zero() { for v in "$@"; do export "$v"; read -r -d '' "$v" || [ ! -z "${!v}" ]; done }
    printf 'a\0b\0c\0d' | while read_zero x y; do echo "x='$x' && y='$y'"; done
    # vypíše:
    # x='a' && y='b'
    # x='c' && y='d'
    GNU Bash je hodně mocný nástroj :-)
    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
    16.12.2018 10:01 pavele
    Rozbalit Rozbalit vše Re: Bash: načtení hodnot oddělených nulovým bajtem \0 do více proměnných
    Nechceš to přepsat do perlu? Nebude to velká změna. :-)
    xkucf03 avatar 16.12.2018 10:52 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Bash: načtení hodnot oddělených nulovým bajtem \0 do více proměnných

    A z něj by šlo nastavit proměnnou ven?

    Jinak v Perlu jsem to dělal také -- přes xargs šlo do Perlu vždy X proměnných a tam se to přes perl -ne '...tady je perlovský skript, klidně i na víc řádků...' zpracovalo (příklad). Ale teď se právě snažím najít způsob, jak to napsat i celé jen v Bashi a aby tam člověk mohl mít blok kódu, ale šlo to napsat i na jeden řádek. Řešení s vlastní funkcí na jeden řádek není, ale zase tu funkci stačí načíst jednou a pak už ji jen používáš.

    Nakonec jsem tam ještě nějakou chybu našel: je problém, když poslední hodnota chybí (tzn. byly by tam dva nulové bajty po sobě) a zároveň chybí ten poslední nulový bajt... ale to už budu řešit tak, že poslední nulový bajt prostě chybět nebude :-)

    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
    17.12.2018 11:56 Andrej | skóre: 51 | blog: Republic of Mordor
    Rozbalit Rozbalit vše Re: Bash: načtení hodnot oddělených nulovým bajtem \0 do více proměnných

    Mně přijde nejjednodušší readarray.

    printf 'a\0b\0c\0d' | for ((;;)); do
      readarray -d $'\0' -n 2 -t array
      ((! ${#array[@]})) && break
      echo "${array[@]@A}"
    done
    

    Nulu na konci to toleruje v pohodě, kdyby tam náhodou byla.

    Ještě by to mohlo umět hlásit, když počet záznamů není sudý, něco jako ((1 == ${#array[@]})) && echo 'Ultra-fatal error.' 1>&2.

    xkucf03 avatar 17.12.2018 18:22 xkucf03 | skóre: 49 | blog: xkucf03
    Rozbalit Rozbalit vše Re: Bash: načtení hodnot oddělených nulovým bajtem \0 do více proměnných

    Díky, tohle je zajímavé řešení. Sice budu používat asi spíš tu svoji funkci, která to naplní do pojmenovaných proměnných, ale tohle je taky užitečné -- ukládám si to do poznámek pro pozdější použití :-)

    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

    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.