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 11:55 | Upozornění

    V neděli 11. října proběhne rotace klíče kořenové zóny. Podruhé v historii. Ondřej Filip na blogu CZ.NIC: "Pokud je pro Vás DNS protokol spíše výzva, ale přesto spravujete nějakou síť či DNS resolver, zkuste si jednoduchý test, který připravila firma Cloudflare na této adrese. Obzvláště zbystřit byste měli, pokud uvidíte nějaká červená políčka."

    Ladislav Hagara | Komentářů: 6
    dnes 09:55 | IT novinky

    Vláda Spojených států se rozhodla vyřadit americkou softwarovou společnost Microsoft a několik dalších velkých technologických podniků z programu, který umožňuje kvalifikovaným zahraničním pracovníkům získat povolení k trvalému pobytu. Oznámila to včera administrativa amerického prezidenta Donalda Trumpa. Opatření zdůvodnila rozsáhlým zneužíváním programu, který je dlouhodobě terčem kritiky ze strany Trumpových příznivců, neboť prý znevýhodňuje americké pracovníky.

    Ladislav Hagara | Komentářů: 11
    dnes 09:44 | IT novinky

    Datové centrum největší ruské technologické společnosti Jandex v Rjazaňské oblasti se stalo cílem dronového útoku a zastavilo provoz. Jandexu se někdy přezdívá „ruský Google“. Provozuje nejoblíbenější internetový vyhledávač v Rusku nebo aplikace pro objednávky jídla a taxi. Využívají jej desítky milionů lidí v rusky mluvících zemích.

    Ladislav Hagara | Komentářů: 11
    dnes 09:33 | Nová verze

    Francouzská společnost Mistral AI představila Mistral Large 4 (interně přezdívaný 'le Chonk', volně přeloženo 'pořádný macek'), 'open-weight multimodální hybridní instruct-and-reasoning model s architekturou granulárního MoE, nativně podporující více jak 160 jazyků'. Model má přes jeden bilión parametrů, z nichž při práci využívá 49 miliard, kontextové okno o délce milion tokenů a obrazový enkodér o 1,6 miliardách parametrů.

    … více »
    ❗Červivý Hřib krade❗ | Komentářů: 2
    dnes 03:22 | Nová verze

    Svobodný multiplatformní herní engine Bevy napsaný v Rustu byl vydán ve verzi 0.20. Díky 227 přispěvatelům.

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

    Simon Long oznámil Raspberry Pi Desktop pro PC a Mac s Intelem postavený na aktualizovaném Debianu 13 Trixie. S klientem Raspberry Pi Connect pro vzdálenou správu. Ke stažení je vedle Raspberry Pi OS pro Raspberry Pi.

    Ladislav Hagara | Komentářů: 1
    včera 21:33 | Zajímavý projekt

    ESP32-C3 adblock přemění lacinou vývojovou desku ESP32‑C3 na samostatný DNS blokovač nejenom reklamních domén, minimalistickou alternativu k populárnímu Pi-hole. ESP32-C3 adblock místo objemných názvů domén ukládá jejich 40-bitové FNV-1a hashe do flash paměti, které pak binárně prohledává, kontrola jedné domény trvá přibližně 10 milisekund. Blocklist pojme až 537 tisíc domén a lze jej spravovat přes webové rozhraní. Projekt zatím

    … více »
    ❗Červivý Hřib krade❗ | Komentářů: 0
    včera 21:00 | Zajímavý software

    ArtCraft je sada open source aplikací pro práci s obrázky a videi "inspirovaných" aplikacemi od Adobe. Napsaných v Rustu. Pro MacOS, Windows i Linux. Běží také ve webovém prohlížeči. Aktuálně se jedná o 7 aplikací: PhotoCraft (Photoshop), VectorCraft (Illustrator), FilmCraft (Premiere Pro), LightCraft (Lightroom), PdfCraft (Acrobat), EffectCraft (After Effects) a DesignCraft (InDesign). Zdrojové kódy jsou k dispozici na GitHubu.

    Ladislav Hagara | Komentářů: 8
    včera 16:33 | Zajímavý software

    Strands Decider 2B je malý open-source model s 2 miliardami parametrů, určený k rychlé klasifikaci vstupů a rozhodování mezi možnostmi, generující odpovědi ve stylu modelu Jev. Strands dosáhl přibližně 72% shody s Jevem na veřejné testovací sadě JevBench (tento benchmark pochopitleně nepředstavuje přímé srovnání s modelem Jev). Zdrojové kódy jsou k dispozici na GitHubu pod licencí Apache-2.0, váhy modelu na Hugging Face.

    ❗Červivý Hřib krade❗ | Komentářů: 4
    včera 16:22 | Upozornění

    Ve věku 90 let zemřela americká softwarová inženýrka Margaret Hamiltonová, která vedla tým, jenž vyvíjel letový software pro program Apollo amerického Národního úřadu pro letectví a vesmír (NASA).

    Ladislav Hagara | Komentářů: 10
    Které desktopové prostředí na Linuxu používáte?
     (9%)
     (7%)
     (4%)
     (21%)
     (29%)
     (8%)
     (5%)
     (2%)
     (14%)
     (20%)
    Celkem 2820 hlasů
     Komentářů: 31, poslední 13.8. 00:27
    Rozcestník

    Dotaz: Bash - přesměrování stdout funkce do proměnné bez subshellu

    4.8.2010 09:07 dustin | skóre: 63 | blog: dustin
    Bash - přesměrování stdout funkce do proměnné bez subshellu
    Přečteno: 1566×
    Zdravím,

    mám funkci, která nastavuje "globální" proměnné. Tedy ji nemohu spouštět v subshellu. Jenže současně bych potřeboval stdout všech jejích příkazů uložit do nějaké proměnné, kterou bych vypsal až později, pokud bude něco splněné (voláno z cronu, chci mít prázdný výstup if globální proměnná nastavená ve funkci je OK, aby zbytečně nechodily maily).

    Tedy nemohu použít jednoduché volání

    VYSTUP=$( funkce )

    Přesměrovat lze i voláním exec, ale zase nevím, jak takovým způsobem přesměrovat do proměnné. Samozřejmě mohu použít pomocné soubory, ale to bych viděl až jako krajní ošklivou možnost.

    Předem díky moc za rady.

    Odpovědi

    4.8.2010 09:40 NN
    Rozbalit Rozbalit vše Re: Bash - přesměrování stdout funkce do proměnné bez subshellu
    Nechapu, nemuzes si ten stdout nastavit do promene uz v te funkci a pak ji zavolat normalne ?

    NN
    4.8.2010 09:53 dustin | skóre: 63 | blog: dustin
    Rozbalit Rozbalit vše Re: Bash - přesměrování stdout funkce do proměnné bez subshellu
    Je tam spoustu příkazů, nechci všechny obalovat, navíc s jejich result cody se pracuje v podmínkách (if nebo &&/||), nastavují se tam pak ty globální proměnné atd. Chci přesměrovat celý výstup funkce.
    4.8.2010 09:46 Adnusem | skóre: 14 | blog: Hmmmm | Praha
    Rozbalit Rozbalit vše Re: Bash - přesměrování stdout funkce do proměnné bez subshellu
    Osobně nevidím žádnou "ošklivost" v pomocných souborech ... Bash není zrovna jazyk ve kterém by šlo psát hezky, sám "pomocné" soubory využívám stále - ničemu to nevadí a předpokládám že ten skript do soutěže o nejhezčí a nejpropracovanější kód dávat nebudeš :)
    tmp=`tempfile`
    funkce &> $tmp
    ... $tmp ...
    rm $tmp
    
    4.8.2010 09:55 dustin | skóre: 63 | blog: dustin
    Rozbalit Rozbalit vše Re: Bash - přesměrování stdout funkce do proměnné bez subshellu
    Jako krajní možnost to samozřejmě zůstává, raději bych bez nich, nemám je moc rád. Při násilném přerušení skriptu zůstávají, zas.rají temp, je to ošklivý hack.
    4.8.2010 10:08 chrono
    Rozbalit Rozbalit vše Re: Bash - přesměrování stdout funkce do proměnné bez subshellu
    Keď dáš do skriptu aj obsluhu správnych signálov, tak nie je problém vymazať pomocné súbory aj pri násilnom ukončení.
    4.8.2010 10:12 dustin | skóre: 63 | blog: dustin
    Rozbalit Rozbalit vše Re: Bash - přesměrování stdout funkce do proměnné bez subshellu
    Jasně, ale to je zase další komplikace, testování, příležitost k chybám.
    David Watzke avatar 4.8.2010 10:21 David Watzke | skóre: 74 | blog: Blog... | Praha
    Rozbalit Rozbalit vše Re: Bash - přesměrování stdout funkce do proměnné bez subshellu
    Co takhle použít tee?
    funkce | tee soubor.txt
    či
    funkce 2>&1 | tee soubor.txt
    “Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
    David Watzke avatar 4.8.2010 10:24 David Watzke | skóre: 74 | blog: Blog... | Praha
    Rozbalit Rozbalit vše Re: Bash - přesměrování stdout funkce do proměnné bez subshellu
    Jo aha, ty nechceš soubory, nějak mi nedošlo, že ani s tee si nepomůžeš. No tak nevím, mám takovej pocit, že tvůj problém nemá řešení, pokud to nebudeš ukládat přímo v tý funkci.
    “Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
    David Watzke avatar 4.8.2010 10:30 David Watzke | skóre: 74 | blog: Blog... | Praha
    Rozbalit Rozbalit vše Re: Bash - přesměrování stdout funkce do proměnné bez subshellu
    Tohle vypadá docela slibně.
    “Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
    frEon avatar 4.8.2010 11:52 frEon | skóre: 40 | Praha
    Rozbalit Rozbalit vše Re: Bash - přesměrování stdout funkce do proměnné bez subshellu
    man exec
    Talking about music is like dancing to architecture.
    4.8.2010 11:56 dustin | skóre: 63 | blog: dustin
    Rozbalit Rozbalit vše Re: Bash - přesměrování stdout funkce do proměnné bez subshellu
    Ale jak ten text dočasně uložit a vypsat až na požádání, bez využití dočasných souborů, tedy předpokládám s využitím proměnné bashe? Pouhé přesměrování do souboru nebo pipy pomocí execu není problém, ale aby se to rovnou načetlo do proměnné, to neumím.
    frEon avatar 4.8.2010 20:29 frEon | skóre: 40 | Praha
    Rozbalit Rozbalit vše Re: Bash - přesměrování stdout funkce do proměnné bez subshellu
    ja mel na mysli presmerovat stdout do stdin, vypsat co potrebujes a pak pomoci read nacist do promenne. ale vyzkousene, ze to funguje nemam
    Talking about music is like dancing to architecture.
    4.8.2010 12:41 NN
    Rozbalit Rozbalit vše Re: Bash - přesměrování stdout funkce do proměnné bez subshellu
    Shell functions may be exported to children via the environment using export -f
    NN
    4.8.2010 13:01 dustin | skóre: 63 | blog: dustin
    Rozbalit Rozbalit vše Re: Bash - přesměrování stdout funkce do proměnné bez subshellu
    Díky, ale jde mi o opačnou cestu - když v potomkovi (funkce volaná přes command substitution) nastavím "globální proměnnou", tak se hodnota nedostane do volajícího předka, kde se s ní dále pracuje.
    4.8.2010 21:39 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: Bash - přesměrování stdout funkce do proměnné bez subshellu
    Ten požadavek je dobytčina. Funkce by měla mít jeden vstup a jeden výstup. Tj. buď všechno do proměnných a nebo všechno do stdout.
    In Ada the typical infinite loop would normally be terminated by detonation.
    4.8.2010 22:33 dustin | skóre: 63 | blog: dustin
    Rozbalit Rozbalit vše Re: Bash - přesměrování stdout funkce do proměnné bez subshellu
    Jde o kus konfiguračního kódu, který je potřeba vykonat ve více různých skriptech. Vůbec by to nemuselo být jako funkce, stačil by include přes source (stejně je ta fce v samostatném souboru), v podstatě nic by se na zadání neměnilo. Ten kód zjišťuje a nastavuje řadu proměnných a přitom hláškami komentuje, co dělá. A já se ptám, zda lze ty hlášky posílané na stdout přesměrovat zvenku toho kódu do proměnné, abych je mohl vypsat, až když je po provedení toho konfiguračního kódu splněná nějaká podmínka. Je to celkem běžná situace.

    Odpovědí samozřejmě může být "bez pomocných souborů nelze", jako ostatně v bashi bohužel často.

    Zřejmě máš nějaké pěkné řešení, když očividně víš, jak se mají věci dělat správně. Zatím ses s ním ale nepochlubil.
    4.8.2010 22:44 Ash | skóre: 53
    Rozbalit Rozbalit vše Re: Bash - přesměrování stdout funkce do proměnné bez subshellu
    O nějaké try... catch... :D bych se v Bashi nesnažil, když se něco vypisuje tak by v té chvíli mělo být známo, jestli to vypsat, nebo ne.

    Chtělo by to udělat obráceně -- upravit ty funkce, aby si výpisy dělaly třeba do proměnné, a na konci pokud bude potřeba je vypsaly na stdout.
    4.8.2010 22:57 dustin | skóre: 63 | blog: dustin
    Rozbalit Rozbalit vše Re: Bash - přesměrování stdout funkce do proměnné bez subshellu
    Díky za tip. Jasně, že přepsáním toho kódu to lze vyřešit. Mě prostě zajímalo, zda lze přesměrovat stdout kusu kódu do proměnné, bez pomocných souborů (ošklivé) a subshellu (nelze předávat hodnoty proměnných zpátky nahoru). Zřejmě ne, minimálně zatím nikdo nevěděl, jak by to šlo, na googlu jsem o tom taky nic nenašel.

    OK, funkci přepíšu, nemá cenu se s tím dále zabývat. A pro další složitější skripty zkusím python, protože produktivita složitějšího skriptování v bashi je tristní. Nakonec taky dobrý závěr :)
    default avatar 5.8.2010 10:45 default | skóre: 22 | Madrid
    Rozbalit Rozbalit vše Re: Bash - přesměrování stdout funkce do proměnné bez subshellu
    No, ono to vypadá, že subshell si vytváří svojí vlastní kopii prostředí, která je odizolovaná od nadřazeného shellu. Takže nějaký export do nadřazenýho shellu fungovat nebude.

    Aspoň takhle jsem to pochopil z dokumentace…
    5.8.2010 11:33 dustin | skóre: 63 | blog: dustin
    Rozbalit Rozbalit vše Re: Bash - přesměrování stdout funkce do proměnné bez subshellu
    To určitě nefunguje, mnohokrát bolestivě znovupřipomenuté např. v řetězci rour (ten taky běží v subshellu). Přesně proto jsem se ptal, jak stdout přesměrovat do proměnné, bez použití pomocných souborů a bez volání daného kusu kódu (fce) v command substitution (tedy subshellu) :)
    5.8.2010 14:13 l4m4
    Rozbalit Rozbalit vše Re: Bash - přesměrování stdout funkce do proměnné bez subshellu
    Většinou, když potřebuji dostat ven proměnné z podřízeného shellu, tak prostě vypíšu
    declare -p seznam jmen proměnných
    
    kamkoli, kde to caller může zachytit (filedeskriptor, dočasný soubor, ...), a ten to následně provede, takže si ty proměnné nastaví. Jelikož declare řeší atributy i quotting, je to poměrně blbuvzdorné.
    5.8.2010 16:01 dustin | skóre: 63 | blog: dustin
    Rozbalit Rozbalit vše Re: Bash - přesměrování stdout funkce do proměnné bez subshellu
    Zajímavé, o declare jsem nevěděl. Díky za tip.

    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.