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 10:11 | IT novinky

    V pořadí šestou knihou autora Martina Malého, která vychází v Edici CZ.NIC, správce české národní domény, je titul Kity, bity, neurony. Kniha s podtitulem Moderní technologie pro hobby elektroniku přináší ucelený pohled na svět současných technologií a jejich praktické využití v domácích elektronických projektech. Tento knižní průvodce je ideální pro každého, kdo se chce podívat na současné trendy v oblasti hobby elektroniky, od

    … více »
    Ladislav Hagara | Komentářů: 0
    dnes 03:11 | Komunita

    Linux Foundation zveřejnila Výroční zprávu za rok 2025 (pdf). Příjmy Linux Foundation byly 311 miliónů dolarů. Výdaje 285 miliónů dolarů. Na podporu linuxového jádra (Linux Kernel Project) šlo 8,4 miliónu dolarů. Linux Foundation podporuje téměř 1 500 open source projektů.

    Ladislav Hagara | Komentářů: 0
    dnes 02:11 | Zajímavý článek

    Jean-Baptiste Mardelle se v příspěvku na blogu rozepsal o novinkám v nejnovější verzi 25.12.0 editoru videa Kdenlive (Wikipedie). Ke stažení také na Flathubu.

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

    OpenZFS (Wikipedie), tj. implementace souborového systému ZFS pro Linux a FreeBSD, byl vydán ve verzi 2.4.0.

    Ladislav Hagara | Komentářů: 0
    dnes 01:00 | IT novinky

    Kriminalisté z NCTEKK společně s českými i zahraničními kolegy objasnili mimořádně rozsáhlou trestnou činnost z oblasti kybernetické kriminality. V rámci operací OCTOPUS a CONNECT ukončili činnost čtyř call center na Ukrajině. V prvním případě se jednalo o podvodné investice, v případě druhém o podvodné telefonáty, při kterých se zločinci vydávali za policisty a pod legendou napadeného bankovního účtu okrádali své oběti o vysoké finanční částky.

    Ladislav Hagara | Komentářů: 3
    včera 14:44 | IT novinky

    Na lepší pokrytí mobilním signálem a dostupnější mobilní internet se mohou těšit cestující v Pendolinech, railjetech a InterPanterech Českých drah. Konsorcium firem ČD - Telematika a.s. a Kontron Transportation s.r.o. dokončilo instalaci 5G opakovačů mobilního signálu do jednotek Pendolino a InterPanter. Tento krok navazuje na zavedení této technologie v jednotkách Railjet z letošního jara.

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

    Rozšíření webového prohlížeče Urban VPN Proxy a další rozšíření od stejného vydavatele (např. 1ClickVPN Proxy, Urban Browser Guard či Urban Ad Blocker) od července 2025 skrytě zachytávají a odesílají celé konverzace uživatelů s AI nástroji (včetně ChatGPT, Claude, Gemini, Copilot aj.), a to nezávisle na tom, zda je VPN aktivní. Sběr probíhá bez možnosti jej uživatelsky vypnout a zahrnuje plný obsah dotazů a odpovědí, metadata relací i

    … více »
    Ladislav Hagara | Komentářů: 5
    včera 05:22 | Zajímavý software

    QStudio, tj. nástroj pro práci s SQL podporující více než 30 databází (MySQL, PostgreSQL, DuckDB, QuestDB, kdb+, …), se stal s vydáním verze 5.0 open source. Zdrojové kódy jsou k dispozici na GitHubu pod licencí Apache 2.0.

    Ladislav Hagara | Komentářů: 6
    včera 04:55 | Nová verze

    Byla vydána nová verze 259 správce systému a služeb systemd (Wikipedie, GitHub).

    Ladislav Hagara | Komentářů: 0
    včera 02:55 | Zajímavý článek

    Cloudflare Radar poskytuje aktuální informace o globálním internetovém provozu, útocích nebo trendech. Publikován byl celkový přehled za rok 2025. Globální internetový provoz vzrostl v roce 2025 o 19 %.

    Ladislav Hagara | Komentářů: 0
    Kdo vám letos nadělí dárek?
     (0%)
     (0%)
     (0%)
     (0%)
     (0%)
     (0%)
     (33%)
     (33%)
     (33%)
    Celkem 6 hlasů
     Komentářů: 10, poslední dnes 12:54
    Rozcestník

    Dotaz: azcopy prerusi 'while' cyklus

    31.1.2020 16:28 GeorgeWH | skóre: 42
    azcopy prerusi 'while' cyklus
    Přečteno: 438×
    Zdravim,

    mam jednoduchy shell skript, ktory vo while cykle prechadza obsah suboru po riadkoch (kazdy riadok predstavuje subor ulozeny na ms azure storage) a zistuje, ci dany subor existuje aj lokalne na disku. Ak subor neexistuje, tak ho vymaze aj z azure storage (taka primitivna obdoba rsync).

    Problem je, ze cyklus sa stale ukonci, ked sa vymaze prvy subor z azure storage (exit status prikazu je 0). Ak samotny prikaz nevykonam, resp. ho nahradim vypisanim samotneho prikazu (ktory by sa spustil) pomocou echo, tak to funguje.

    Cast skriptu, ktora nefunguje:
    # delete remote files (if enabled)
    if [ "x$delete_remote" = "x1" ]; then
    
      while read line; do
    
        file="$(echo $line | awk -F';' '{ print $2 }')"
    
        if [ ! -f "$file" ]; then
          azcopy remove "$url/$file?$sas" >/dev/null            <=== toto ukonci cyklus pri prvej zhode
          echo "azcopy remove \"$url/$file?$sas\" >/dev/null"   <=== ak to nahradim tymto, tak je to ok
          test $? -ne 0 && error=1
        fi
      done < $remote_files_list
    fi
    
    Obsah/format suboru $remote_files_list (prve je nazov, druhe je velkost):
    ;aaa/a1;0;
    ;aaa/a2;0;
    ;aaa/a3;0;
    ;bbb/b1;0;
    ;bbb/b2;0;
    ;bbb/b3;0;
    
    Lokalne subory:
    aaa/a1
    aaa/a2
    aaa/a3
    
    takze by v azure malo postupne po jednotlivych suboroch vymazat cely adresar bbb.

    Ked spustim shell v debug mode:
    + [ x1 = x1 ]
    + read line
    + echo ;aaa/a1;0;
    + awk -F; { print $2 }
    + file=aaa/a1
    + [ ! -f aaa/a1 ]
    + read line
    + echo ;aaa/a2;0;
    + awk -F; { print $2 }
    + file=aaa/a2
    + [ ! -f aaa/a2 ]
    + read line
    + echo ;aaa/a3;0;
    + awk -F; { print $2 }
    + file=aaa/a3
    + [ ! -f aaa/a3 ]
    + read line
    + echo ;bbb/b1;0;
    + awk -F; { print $2 }
    + file=bbb/b1
    + [ ! -f bbb/b1 ]
    + azcopy remove https://azure.storage.url/path/to/bbb/b1
    + test 0 -ne 0
    + read line
    
    A cyklus sa ukonci (skript potom pokracuje dalej).

    Netusite, cim by to mohlo byt?

    Vdaka.

    Řešení dotazu:


    Odpovědi

    31.1.2020 17:00 NN
    Rozbalit Rozbalit vše Re: azcopy prerusi 'while' cyklus
    Aby skript azcopy neovlivnil aktualni skript mohlo by stacit obalit prikaz do subshellu:
    $(azcopy remove "$url/$file?$sas" >/dev/null)
    test $? -ne 0 && error=1
    
    Tipuju ze to zhavaruje a vezme sebou celou smycku.
    31.1.2020 17:19 GeorgeWH | skóre: 42
    Rozbalit Rozbalit vše Re: azcopy prerusi 'while' cyklus
    Rovnaky vysledok. Skusal som exec azcopy remove ..., /bin/sh -c "/usr/bin/azcopy remove ...", eval $(echo "azcopy remove ..."), nic, stale sa cyklus ukonci po prvom odstraneni suboru, a azcopy skonci bez chyby (je to vidno aj v tom debugu).

    Co ma napada je, ze azcopy nejakym sposobom "vymaze" data predane while cyklu. Je to mozne?

    Skusim este stace.
    31.1.2020 18:07 Peter Golis | skóre: 65 | blog: Bežné záležitosti | Bratislava
    Rozbalit Rozbalit vše Re: azcopy prerusi 'while' cyklus
    Odporučil by som nahlásiť tento bug na podporu MS Azure, tam patrí azcopy a jeho panické obhospodarovanie výnimiek.
    Řešení 1× (Michal Kubeček)
    Jendа avatar 31.1.2020 20:49 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: azcopy prerusi 'while' cyklus
    azcopy ... < /dev/null
    31.1.2020 20:27 debian+
    Rozbalit Rozbalit vše Re: azcopy prerusi 'while' cyklus
    Nestaci iba:?
    (azcopy remove "$url/$file?$sas" >/dev/null)
    Řešení 1× (GeorgeWH (tazatel))
    31.1.2020 19:57 GeorgeWH | skóre: 42
    Rozbalit Rozbalit vše Re: azcopy prerusi 'while' cyklus
    Pouzil som for miesto while a uz to funguje.
    31.1.2020 20:21 NN
    Rozbalit Rozbalit vše Re: azcopy prerusi 'while' cyklus
    WTF?
    31.1.2020 20:37 GeorgeWH | skóre: 42
    Rozbalit Rozbalit vše Re: azcopy prerusi 'while' cyklus
    Miesto
    while read line; do
      ...
    done < $remote_files_list
    som pouzil
    for line in $(cat $remote_files_list); do
      ...
    done
    a toto funguje.
    Jendа avatar 31.1.2020 20:48 Jendа | skóre: 78 | blog: Jenda | JO70FB
    Rozbalit Rozbalit vše Re: azcopy prerusi 'while' cyklus
    No sežere to zbytek vstupu z toho přesměrování a tím to skončí. Si zkus
    cat /proc/cpuinfo | while read l; do echo $l; cat - > /dev/null; done
    Tohle je obecně věc co nevím jak by se v Bashi měla řešit -- for cyklus nejde dělat když má člověk v těch věcech mezery (a současně chce původní IFS), u while je příjemné, že čte po řádcích. Ale zase to má tenhle problém.
    3.2.2020 14:57 kolega
    Rozbalit Rozbalit vše Re: azcopy prerusi 'while' cyklus
    jo tohle je pak otravny resit pres \0 a xargs ...
    4.2.2020 10:02 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: azcopy prerusi 'while' cyklus
    Tohle je obecně věc co nevím jak by se v Bashi měla řešit

    A o minutu později jsi sám řešení navrhl. :-)

    Mimochodem, konstrukce

      cmd | while read v; do ... ; done
    

    má ještě jeden háček: while cyklus se při ní provádí v subshellu, takže proměnné nastavené v těle cyklu se nedostanou "ven" (nelze takto předávat hodnoty zbytku skriptu). Naštěstí to bash umožňuje obejít pomocí

      while read v; do ... ; done < <( cmd )
    

    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.