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 23:44 | Komunita

Několik posledních verzí GNOME Shellu obsahuje chybu způsobující memory leak (únik paměti). Viz například videozáznamy verzí 3.26 nebo 3.28. Nalezení chyby #64 a její opravě se věnuje Georges Basile Stavracas Neto v příspěvku na svém blogu [reddit].

Ladislav Hagara | Komentářů: 0
včera 10:33 | Komunita

V pondělí měl na YouTube online premiéru otevřený krátký 2D film Hero vytvořený v 3D softwaru Blender. Cílem stejnojmenného projektu Hero je vylepšit nástroj Grease Pencil (tužka) v Blenderu 2.8.

Ladislav Hagara | Komentářů: 3
20.4. 23:22 | Nová verze

Byla vydána verze 4.0 kolekce svobodného softwaru umožňujícího nahrávání, konverzi a streamovaní digitálního zvuku a obrazu FFmpeg (Wikipedie). Přehled novinek v Changelogu (GitHub).

Ladislav Hagara | Komentářů: 0
20.4. 17:22 | Komunita

Včera vydanou hru Rise of the Tomb Raider pro Linux lze do pondělí 23. dubna koupit na Steamu s 67% slevou. Místo 49,99 € za 16,49 €.

Ladislav Hagara | Komentářů: 0
20.4. 16:11 | Komunita

Na Humble Bundle lze získat počítačovou hru Satellite Reign (Wikipedie, YouTube) běžící také v Linuxu zdarma. Speciální akce končí v sobotu v 19:00.

Ladislav Hagara | Komentářů: 5
20.4. 15:44 | Zajímavý software

Společnost Apple koupila před třemi lety společnost FoundationDB vyvíjející stejnojmenný NoSQL databázový systém FoundationDB (Wikipedie). Včera byl tento systém uvolněn jako open source pod licencí Apache 2.0. Zdrojové kódy jsou k dispozici na GitHubu.

Ladislav Hagara | Komentářů: 0
20.4. 15:00 | Nová verze

Po dva a půl roce od vydání verze 5.7 oznámila společnost Oracle vydání nové major verze 8.0 (8.0.11) databázového systému MySQL (Wikipedie). Přehled novinek v poznámkách k vydání. Zdrojové kódy komunitní verze MySQL jsou k dispozici na GitHubu.

Ladislav Hagara | Komentářů: 2
19.4. 14:44 | Pozvánky

Spolek OpenAlt zve příznivce otevřených technologií a otevřeného přístupu na 151. brněnský sraz, který proběhne v pátek 20. 4. od 18:00 hodin v restauraci Benjamin na Drobného 46.

Ladislav Hagara | Komentářů: 0
19.4. 13:33 | Nová verze

Byla vydána verze 18.04.0 KDE Aplikací (KDE Applications). Přehled novinek v kompletním seznamu změn a na stránce s dalšími informacemi.

Ladislav Hagara | Komentářů: 0
19.4. 13:11 | Nová verze

Bylo oznámeno vydání nové stabilní verze 1.26 a beta verze 1.27 open source textového editoru Atom (Wikipedie). Přehled novinek i s náhledy v příspěvku na blogu. Podrobnosti v poznámkách k vydání.

Ladislav Hagara | Komentářů: 0
Používáte na serverech port knocking?
 (3%)
 (7%)
 (46%)
 (27%)
 (17%)
Celkem 341 hlasů
 Komentářů: 29, poslední 5.4. 12:25
    Rozcestník

    Dotaz: Předávání proměnných uvnitř Bash skriptu

    15.8.2005 17:45 Jirka
    Předávání proměnných uvnitř Bash skriptu
    Přečteno: 462×
    Vsechny zdravim,
    řeším problém, jak předat v rámci jednoho Bash skriptu hodnoty proměnných mezi funkcí a zbytkem skriptu. Kdyz výstup funkce_1 předávám rourou do funkce_2, proměnné z funkce_1 se někam ztratí a zbytek skriptu je nevidí. Když směrování rourou do funkce_2 zruším je všechno v pořádku. (Ale tu funkci_2 tam mít potřebuju, takže ji vynechat nemůžu.)

    Odpovědi

    15.8.2005 17:55 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
    Rozbalit Rozbalit vše Re: Předávání proměnných uvnitř Bash skriptu
    Nějak jsem to z tvého popisu nebyl schopen vyčíst. Jedná se ti o tohle?
    #!/bin/bash
    
    func1() {
      FOO="bar"
    }
    
    func2() {
      echo $FOO
    }
    
    func1
    func2
    
    A výstupem je normálně
    $ sh foo
    bar
    $
    
    Předávání proměnných rourou jsem nikdy neviděl.
    When your hammer is C++, everything begins to look like a thumb.
    15.8.2005 18:03 zabza | skóre: 52 | blog: Nad_sklenkou_cerveneho
    Rozbalit Rozbalit vše Re: Předávání proměnných uvnitř Bash skriptu
    Spíš nepůjde tazateli o funkce, ale o normální příkazy spojené rourou... příkaz1|příkaz2 ... Každý z nich se pouští v jiné instanci shellu, takže nemají společný environment, až na "defaultní" a exportované proměnné. Řešením je nejspíš export, pokud ne, není to úloha pro shell, ale pro nějaký skriptovací jazyk :-)
    15.8.2005 18:07 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
    Rozbalit Rozbalit vše Re: Předávání proměnných uvnitř Bash skriptu
    jak předat v rámci jednoho Bash skriptu hodnoty proměnných mezi funkcí a zbytkem skriptu
    Je pravda, že jsem si to četl několikrát, ale pochopil jsem to tak, že se snaží předávat proměnné prostřednictvím roury, což je šílenost, protože proměnné v shellu jsou (pokud vím) globální.
    When your hammer is C++, everything begins to look like a thumb.
    15.8.2005 18:08 zabza | skóre: 52 | blog: Nad_sklenkou_cerveneho
    Rozbalit Rozbalit vše Re: Předávání proměnných uvnitř Bash skriptu
    Takže myslíš, že se mi pokazila kříšťálová koule? :-)
    15.8.2005 18:12 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
    Rozbalit Rozbalit vše Re: Předávání proměnných uvnitř Bash skriptu
    Nevím, já sám napjatě čekám, jestli jsem to pochopil správně :-). Ale autor se zatím neozval.
    When your hammer is C++, everything begins to look like a thumb.
    15.8.2005 18:19 Jirka
    Rozbalit Rozbalit vše Re: Předávání proměnných uvnitř Bash skriptu
    Pokusím se to přiblížit. Tady je to hodně zjednodušené, ale jde o to , že funct1 generuje určitý výstup a kromě toho v proměnných předává určité hodnoty, které na std výstup jít nemají. funct2 slouží jako filtr, který výstup z funct1 filtruje podle zvoleného režimu.

    Opravdu zjednodušeně:

    #!/bin/bash

    func1() {
    FOO="bar"
    }

    func2() {
    sed "s/něco/něcojiného/g"
    }

    func1 | func2

    echo $FOO


    Dík.
    15.8.2005 18:28 Michal Vyskočil | skóre: 60 | blog: miblog | Praha
    Rozbalit Rozbalit vše Re: Předávání proměnných uvnitř Bash skriptu
    Aha. No proměnné v shellu jsou globální, takže se tím trápit nemusíš.
    When your hammer is C++, everything begins to look like a thumb.
    15.8.2005 18:35 Jirka
    Rozbalit Rozbalit vše Re: Předávání proměnných uvnitř Bash skriptu
    No právě, to jsem si taky myslel. Myslel jsem že je to možná jen chybou v mém bashi (2.05b v SuSE 9.0), tak jsem to zkusil se slaxem 5.0.6 a také to nejde. Při směrování do roury fakt skript tu proměnnou nevidí. J.
    15.8.2005 18:54 unchallenger | skóre: 69 | blog: unchallenger
    Rozbalit Rozbalit vše Re: Předávání proměnných uvnitř Bash skriptu
    Roura vytvoří nový subshell, takže to nejde. Je to stejně marné jako
    (FOO=bar)
    echo $FOO
    
    Už se to tu v jedné diskusi rozebíralo docela podrobně, snad ji lze najít...
    15.8.2005 18:57 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Předávání proměnných uvnitř Bash skriptu
    Trochu matoucí ale je, že když do hlavního skriptu i obou funkcí napíšu 'echo $$', vypíše se třikrát totéž. Takže ty funkce sice běží v samostatných shellech, ale ty předstírají, že se jedná pořád o ten původní…
    15.8.2005 19:02 zabza | skóre: 52 | blog: Nad_sklenkou_cerveneho
    Rozbalit Rozbalit vše Re: Předávání proměnných uvnitř Bash skriptu
    To je trošku matoucí, ale je to v man bash:
           $      Expands to the process ID of the shell.  In a  ()  subshell,  it
                  expands  to  the  process  ID of the current shell, not the sub-
                  shell.
    
    15.8.2005 19:08 Jirka
    Rozbalit Rozbalit vše Re: Předávání proměnných uvnitř Bash skriptu
    No toho jsem se bál. Budu to muset celé přepsat a příslušné filtry opakovaně přidat přímo do příslušných funct_xy. To sice přežiju, ale celý skript bude delší a možná míň přehledný.

    Nic se nedá dělat. Všem děkuji. J.
    15.8.2005 19:18 Michal Vyskočil
    Rozbalit Rozbalit vše Re: Předávání proměnných uvnitř Bash skriptu
    To ruční použití roury nefungovalo?
    15.8.2005 20:21 Jirka
    Rozbalit Rozbalit vše Re: Předávání proměnných uvnitř Bash skriptu
    Ale jo, to určitě půjde, ale dnes to už nemám šanci vyzkoušet. Jedná se o skript, ve kterém je potřeba překopat cca 500 řádků.
    (o minutu jsme se minuli)
    Dík J.
    15.8.2005 18:31 Jirka
    Rozbalit Rozbalit vše Re: Předávání proměnných uvnitř Bash skriptu
    Ajaj, když to po sobě čtu (původní dotaz), tak jsem to fakt napsal nesrozumitelně, ale o předávání proměnných rourou mi fakt nejde. Do roury samozřejmě jen stdout. Jen jsem čekal, že skript bude o proměnných vědět. Ví, ale jen pokud nesměruju výstup funct1 do roury. A to je problém. Potřebuju aby skript o proměnných věděl i když std. výst. funct1 rourou posílám do filtru (funct2).
    15.8.2005 19:02 Michal Vyskočil
    Rozbalit Rozbalit vše Re: Předávání proměnných uvnitř Bash skriptu
    Asi je to přes ruku, ale můžeš si tu rouru udělat ručně.
    $FIFO=/tmp/fifo
    rm -f $FIFO
    mkfifo $FIFO
    
    func1() {
      (echo -e "foo\nbar" > $FIFO)&
      FOO="bar"
    }
    
    func2() {
      grep 'foo' $FIFO
    }
    
    func1
    func2
    echo FOO: $FOO
    
    rm -f $FIFO
    
    15.8.2005 19:19 Jirka
    Rozbalit Rozbalit vše Re: Předávání proměnných uvnitř Bash skriptu
    Taky možné. Určitě to bude rychlejší než běžný tmp soubor. Zítra vyzkouším, dám vědět. (Je to na delší dobu). Dík. J.
    16.8.2005 12:24 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
    Rozbalit Rozbalit vše Re: Předávání proměnných uvnitř Bash skriptu
    Při vytváření jakýchkoli dočasných souborů doporučuji provést jejich úklid v trapu
    trap 'rm -f $FIFO' EXIT
    nebo
    clean_up() {
      rm -f $FIFO
    }
    trap clean_up EXIT
    XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
    16.8.2005 16:01 Jirka
    Rozbalit Rozbalit vše Re: Předávání proměnných uvnitř Bash skriptu
    Tak už to funguje. Všem díky za odpovědi. Použil jsem ty pojmenované roury a vše je jak má být.
    J.

    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.