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 07:00 | Nová verze

Byla vydána nová verze 28.16.0 webového prohlížeče Pale Moon (Wikipedie) vycházejícího z Firefoxu. Přehled novinek v poznámkách k vydání. Řešeno je také několik bezpečnostních chyb.

Ladislav Hagara | Komentářů: 0
dnes 01:11 | Nová verze

Byla vydána nová stabilní verze 2.91 svobodného 3D softwaru Blender. Přehled novinek v oznámení o vydání a na YouTube.

Ladislav Hagara | Komentářů: 0
včera 20:00 | IT novinky

Josef Průša představil nové vylepšené 3D tiskárny MK3S+ a MINI+. Nejzásadnější změnou je přítomnost nové sondy SuperPINDA. Ta nahrazuje původní sondy P.I.N.D.A. V2 (MK3/S, MK2.5/S) a M.I.N.D.A. (MINI). Cena MINI+ se zvedá o 1 000 Kč na 10 990 Kč.

Ladislav Hagara | Komentářů: 0
včera 16:33 | IT novinky

Hodnota Bitcoinu, decentralizované kryptoměny se po třech letech opět blíží k 20 000 dolarům. Nejvyšší hodnotu 19 783 dolarů měl 17. prosince 2017. Následně během 7 týdnů klesl pod 7 000 dolarů. Vývoj lze sledovat také v terminálu. Například pomocí aplikace cointop (GitHub). Vyzkoušet lze "ssh cointop.sh".

Ladislav Hagara | Komentářů: 18
včera 15:00 | Komunita Ladislav Hagara | Komentářů: 0
včera 14:00 | Komunita

Vývojáři grafického editoru Glimpse, forku grafického editoru GIMP, hodnotí rok od vydání Glimpse 0.1.0. Stanovených cílů bylo dosaženo. Glimpse byl stažen minimálně 86 159 krát. Vývojářům GIMPu bylo odesláno 500 dolarů. Vydání verze Glimpse vycházející z GIMPu 3.0 zatím není plánováno. Vývojáři se pravděpodobně zaměří na vývoj Glimpse NX. Stabilní verze by měla vyjít v roce 2022.

Ladislav Hagara | Komentářů: 13
včera 00:33 | IT novinky

Jon von Tetzchner představil Vivaldi Mail aneb poštovního klienta integrovaného ve webovém prohlížeči Vivaldi. Součástí Vivaldi Mailu je RSS čtečka a kalendář. Zatím se jedná pouze o ukázku (Technical Preview). Vyzkoušet lze v nejnovější Snapshot verzi. Vivaldi Mail je nutné povolit v nastavení "vivaldi://experiments/".

Ladislav Hagara | Komentářů: 5
24.11. 23:22 | Nová verze

Byla vydána verze 3.5.0 svobodného astronomického softwaru KStars. Z novinek vývojáři zdůrazňují integraci StellarSolveru.

Ladislav Hagara | Komentářů: 2
24.11. 19:55 | Zajímavý článek

MojeFedora.cz upozorňuje, že Fedora 33 zpřísnila kryptografickou politiku. Pokud jste po upgradu na Fedoru 33 narazili na to, že se nemůžete připojit k šifrované Wi-Fi, VPN apod., které jste dosud bez problémů používali, je to velmi pravděpodobně způsobené přísnější politikou.

Ladislav Hagara | Komentářů: 4
24.11. 16:00 | Komunita

Eben Upton na blogu Raspberry Pi informuje, že ovladač V3DV pro Raspberry Pi 4 úspěšně prošel testy kompatibility s Vulkan 1.0 u Khronosu.

Ladislav Hagara | Komentářů: 0
Jak nakládáte s řetězovými e-maily?
 (6%)
 (41%)
 (3%)
 (2%)
 (3%)
 (9%)
 (58%)
Celkem 290 hlasů
 Komentářů: 8, poslední 16.11. 22:50
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: 481×
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.