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 21:21 | Nová verze Ladislav Hagara | Komentářů: 0
včera 11:44 | Zajímavý projekt

Na Indiegogo byla spuštěna kampaň na podporu herní mini konzole a multimediálního centra RetroEngine Sigma od Doyodo. Předobjednat ji lze již od 49 dolarů. Požadovaná částka 20 000 dolarů byla překonána již 6 krát. Majitelé mini konzole si budou moci zahrát hry pro Atari VCS 2600, Sega Genesis nebo NES. Předinstalováno bude multimediální centrum Kodi.

Ladislav Hagara | Komentářů: 0
včera 00:10 | Nová verze

Byla vydána verze 4.7 redakčního systému WordPress. Kódové označením Vaughan bylo vybráno na počest americké jazzové zpěvačky Sarah "Sassy" Vaughan. Z novinek lze zmínit například novou výchozí šablonu Twenty Seventeen, náhledy pdf souborů nebo WordPress REST API.

Ladislav Hagara | Komentářů: 4
6.12. 12:00 | Zajímavý projekt

Projekt Termbox umožňuje vyzkoušet si linuxové distribuce Ubuntu, Debian, Fedora, CentOS a Arch Linux ve webovém prohlížeči. Řešení je postaveno na projektu HyperContainer. Podrobnosti v často kladených dotazech (FAQ). Zdrojové kódy jsou k dispozici na GitHubu [reddit].

Ladislav Hagara | Komentářů: 26
6.12. 11:00 | Bezpečnostní upozornění

Byly zveřejněny informace o bezpečnostní chybě CVE-2016-8655 v Linuxu zneužitelné k lokální eskalaci práv. Chyba se dostala do linuxového jádra v srpnu 2011. V upstreamu byla opravena minulý týden [Hacker News].

Ladislav Hagara | Komentářů: 2
5.12. 22:00 | Komunita

Přibližně před měsícem bylo oznámeno, že linuxová distribuce SUSE Linux Enterprise Server (SLES) běží nově také Raspberry Pi 3 (dokumentace). Obraz verze 12 SP2 pro Raspberry Pi 3 je ke stažení zdarma. Pro registrované jsou po dobu jednoho roku zdarma také aktualizace. Dnes bylo oznámeno, že pro Raspberry Pi 3 je k dispozici také nové openSUSE Leap 42.2 (zprávička). K dispozici je hned několik obrazů.

Ladislav Hagara | Komentářů: 6
5.12. 06:00 | Zajímavý software

OMG! Ubuntu! představuje emulátor terminálu Hyper (GitHub) postavený na webových technologiích (HTML, CSS a JavaScript). V diskusi k článku je zmíněn podobný emulátor terminálu Black Screen. Hyper i Black Screen používají framework Electron, stejně jako editor Atom nebo vývojové prostředí Visual Studio Code.

Ladislav Hagara | Komentářů: 50
5.12. 06:00 | Zajímavý článek

I letos vychází řada ajťáckých adventních kalendářů. QEMU Advent Calendar 2016 přináší každý den nový obraz disku pro QEMU. Programátoři se mohou potrápit při řešení úloh z kalendáře Advent of Code 2016. Kalendáře Perl Advent Calendar 2016 a Perl 6 Advent Calendar přinášejí každý den zajímavé informace o programovacím jazyce Perl. Stranou nezůstává ani programovací jazyk Go.

Ladislav Hagara | Komentářů: 10
3.12. 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ářů: 17
3.12. 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
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 789 hlasů
 Komentářů: 50, poslední 29.11. 15:50
Rozcestník
Reklama

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: 440×
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.