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í
×
eParkomat, startup z ČR, postoupil mezi finalisty evropského akcelerátoru ChallengeUp!
Robot na pivo mu otevřel dveře k opravdovému byznysu
Internet věcí: Propojený svět? Už se to blíží...
včera 16:24 | Nová verze

Byla vydána Mageia 5.1. Jedná se o první opravné vydání verze 5, jež vyšla v červnu loňského roku (zprávička). Uživatelům verze 5 nepřináší opravné vydání nic nového, samozřejmě pokud pravidelně aktualizují. Vydání obsahuje všechny aktualizace za posledního téměř půldruhého roku. Mageia 5.1 obsahuje LibreOffice 4.4.7, Linux 4.4.32, KDE4 4.14.5 nebo GNOME 3.14.3.

Ladislav Hagara | Komentářů: 0
včera 13:42 | Pozvánky

V Praze probíhá konference Internet a Technologie 16.2, volné pokračování jarní konference sdružení CZ.NIC. Konferenci lze sledovat online na YouTube. K dispozici je také archiv předchozích konferencí.

Ladislav Hagara | Komentářů: 0
2.12. 22:44 | Komunita

Joinup informuje, že Mnichov používá open source groupware Kolab. V srpnu byl dokončen dvouletý přechod na toto řešení. V provozu je asi 60 000 poštovních schránek. Nejenom Kolabu se věnoval Georg Greve ve své přednášce Open Source: the future for the European institutions (SlideShare) na konferenci DIGITEC 2016, jež proběhla v úterý 29. listopadu v Bruselu. Videozáznam přednášek z hlavního sálu je ke zhlédnutí na Livestreamu.

Ladislav Hagara | Komentářů: 16
2.12. 15:30 | Zajímavý projekt

Společnost Jolla oznámila v příspěvku Case study: Sailfish Watch na svém blogu, že naportovala Sailfish OS na chytré hodinky. Využila a inspirovala se otevřeným operačním systémem pro chytré hodinky AsteroidOS. Použita je knihovna libhybris. Ukázka ovládání hodinek na YouTube.

Ladislav Hagara | Komentářů: 8
2.12. 14:15 | Nová verze

Byla vydána verze 7.1.0 skriptovacího jazyka PHP používaného zejména k vývoji dynamických webových stránek. Jedná se o první stabilní verzi nejnovější větvě 7.1. Přehled novinek v dokumentaci. Podrobnosti v ChangeLogu. K dispozici je také příručka pro přechod z PHP 7.0.x na PHP 7.1.x.

Ladislav Hagara | Komentářů: 2
2.12. 12:55 | Nová verze

Google Chrome 55 byl prohlášen za stabilní. Nejnovější stabilní verze 55.0.2883.75 tohoto webového prohlížeče přináší řadu oprav a vylepšení (YouTube). Opraveno bylo také 36 bezpečnostních chyb. Mariusz Mlynski si například vydělal 22 500 dolarů za 3 nahlášené chyby (Universal XSS in Blink).

Ladislav Hagara | Komentářů: 4
2.12. 11:55 | Pozvánky

Máte rádi svobodný software a hardware nebo se o nich chcete něco dozvědět? Přijďte na 135. sraz spolku OpenAlt, který se bude konat ve čtvrtek 8. prosince od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Sraz bude tentokrát tématický. Bude retro! K vidění budou přístroje jako Psion 5mx nebo Palm Z22. Ze svobodného hardwaru pak Openmoko nebo čtečka WikiReader. Přijďte se i vy pochlubit svými legendami, nebo alespoň na pivo. Moderní hardware má vstup samozřejmě také povolen.

xkucf03 | Komentářů: 0
2.12. 00:10 | Nová verze

Byla vydána verze 3.2 svobodného systému pro detekci a prevenci průniků a monitorování bezpečnosti počítačových sítí Suricata. Z novinek lze zmínit například podporu protokolů DNP3 a CIP/ENIP, vylepšenou podporu TLS a samozřejmě také aktualizovanou dokumentaci.

Ladislav Hagara | Komentářů: 0
1.12. 21:00 | Nová verze

Byla vydána beta verze Linux Mintu 18.1 s kódovým jménem Serena. Na blogu Linux Mintu jsou hned dvě oznámení. První o vydání Linux Mintu s prostředím MATE a druhé o vydání Linux Mintu s prostředím Cinnamon. Stejným způsobem jsou rozděleny také poznámky k vydání (MATE, Cinnamon) a přehled novinek s náhledy (MATE, Cinnamon). Linux Mint 18.1 bude podporován až do roku 2021.

Ladislav Hagara | Komentářů: 0
1.12. 16:42 | Nová verze

Byl vydán Devuan Jessie 1.0 Beta 2. Jedná se o druhou beta verzi forku Debianu bez systemd představeného v listopadu 2014 (zprávička). První beta verze byla vydána v dubnu letošního roku (zprávička). Jedna z posledních přednášek věnovaných Devuanu proběhla v listopadu na konferenci FSCONS 2016 (YouTube, pdf).

Ladislav Hagara | Komentářů: 0
Kolik máte dat ve svém domovském adresáři na svém primárním osobním počítači?
 (32%)
 (24%)
 (29%)
 (7%)
 (5%)
 (3%)
Celkem 767 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama

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

4.8.2010 09:07 dustin | skóre: 60 | blog: dustin
Bash - přesměrování stdout funkce do proměnné bez subshellu
Přečteno: 1152×
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: 60 | 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.
Habroslav avatar 4.8.2010 09:46 Habroslav | 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: 60 | 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: 60 | 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: 60 | 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: 60 | 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: 60 | 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: 60 | 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: 60 | 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: 60 | 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á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.