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 21:32 | Nasazení Linuxu

Canonical představuje nejnovější verzi chytré helmy DAQRI s Ubuntu pro rozšířenou realitu. K vidění bude příští týden v Barceloně na veletrhu Mobile World Congress 2017.

Ladislav Hagara | Komentářů: 0
včera 21:31 | Pozvánky

Pro zájemce o hlubší znalosti fungování operačních systémů připravila MFF UK nový předmět Pokročilé operační systémy, v rámci něhož se vystřídají přednášející nejen z řad pracovníků fakulty, ale dorazí také odborníci ze společností AVAST, Oracle, Red Hat a SUSE. Tento předmět volně navazuje na kurz Operační systémy ze zimního semestru, ale pokud máte praktické zkušenosti odjinud (například z přispívání do jádra Linuxu) a chcete si

… více »
Martin Děcký | Komentářů: 0
včera 21:30 | Pozvánky

Czech JBoss User Group Vás srdečně zve na setkání JBUG v Brně, které se koná ve středu 1. března 2017 v prostorách Fakulty Informatiky Masarykovy Univerzity v místnosti A318 od 18:00. Přednáší Tomáš Remeš a Matěj Novotný na téma CDI 2.0 - New and Noteworthy. Více informací na Facebooku a na Twitteru #jbugcz.

mjedlick | Komentářů: 0
20.2. 23:45 | Zajímavý software

Na blogu Qt bylo představeno Qt 3D Studio. Jedná se o produkt dosud známý pod názvem NVIDIA DRIVE™ Design Studio. NVIDIA jej věnovala Qt. Jedná se o několik set tisíc řádků zdrojového kódu. Qt 3D Studio bude stejně jako Qt k dispozici jak pod open source, tak pod komerční licencí. Ukázka práce s Qt 3D Studiem na YouTube.

Ladislav Hagara | Komentářů: 10
20.2. 17:50 | Komunita

Nadace The Document Foundation (TDF) zastřešující vývoj svobodného kancelářského balíku LibreOffice slaví 5 let od svého oficiálního vzniku. Nadace byla představena 28. září 2010. Formálně byla založena ale až 17. února 2012.

Ladislav Hagara | Komentářů: 0
20.2. 12:50 | Komunita

Mozilla.cz informuje, že dosud experimentální funkce Page Shot z programu Firefox Test Pilot (zprávička) se stane součástí Firefoxu. Page Shot je nástroj pro vytváření snímků webových stránek. Umí výběr oblasti, prvku stránky (např. odstavce), nebo uložení snímku celé stránky. Snímky lze ukládat na disk nebo nahrávat na server Mozilly. Nedávno bylo oznámeno, že se součástí Firefoxu stane Activity Stream.

Ladislav Hagara | Komentářů: 31
20.2. 04:10 | Nová verze

Po 10 týdnech vývoje od vydání Linuxu 4.9 (zprávička) oznámil Linus Torvalds, mj. již 20 let žijící v USA, vydání Linuxu 4.10 (LKML). Přehled nových vlastností a vylepšení například na Kernel Newbies a v Jaderných novinách (1, 2 a 3). Kódové jméno Linuxu 4.10 je Fearless Coyote.

Ladislav Hagara | Komentářů: 22
19.2. 15:55 | Zajímavý projekt

Vyzkoušet si příkazy a vyřešit několik úkolů lze na stránkách Commandline Challenge (CMD Challenge). Úkoly lze řešit různými způsoby, důležitý je výsledek. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.

Ladislav Hagara | Komentářů: 18
18.2. 17:35 | Bezpečnostní upozornění

Německá Bundesnetzagentur (obdoba českého ČTU) zakázala na německém území prodej panenky Cayla kvůli „špionáži“ dětí. Tato elektronická hračka obsahuje mikrofon, reproduktor a kameru a bezdrátové komunikační rozhraní, pomocí kterého se hračka připojuje na servery výrobce. Takovýmto způsobem může hračka pomocí umělé inteligence „odpovídat“ na dotazy dítěte. Hlavní problém bude ale asi někde jinde, podle prvotních zpráv může

… více »
Petr Tomášek | Komentářů: 34
17.2. 15:30 | Bezpečnostní upozornění

CSIRT.CZ upozorňuje, že bezpečnostní experti objevili nový typ malwaru, jenž cílí na open source e-commerce platformu Magento. Malware je zajímavý tím, že se jedná o první svého druhu, jehož kód zůstává skrytý v SQL databázi zasaženého e-shopu. Škodlivý kód je volán pomocí tzv. SQL trigerru, který je spouštěn při každém vytvoření objednávky v systému.

Ladislav Hagara | Komentářů: 6
Jak se stavíte k trendu ztenčování přenosných zařízení (smartphony, notebooky)?
 (13%)
 (2%)
 (72%)
 (3%)
 (10%)
Celkem 679 hlasů
 Komentářů: 61, poslední včera 13:06
Rozcestník

Dotaz: Bash: Nahrazení $P obsahem proměnný uvnitř for cyklu

David Watzke avatar 28.12.2005 00:51 David Watzke | skóre: 74 | blog: Blog... | Praha
Bash: Nahrazení $P obsahem proměnný uvnitř for cyklu
Přečteno: 182×

Ahoj. Doufám, že jsem napsal výstižně titulek. :) Hodím jsem jen nejpodstatnější info ohledně skriptu, kterej píšu a na závěr řeknu problém.

FIX=`echo hal \ # jmeno-baliku je $1, ale to jen aby bylo jasno, dal jsem příklad balík hal
| sed -e 's/=//g' \
      -e 's/\[[[digit:]].*\]//' \
      -e 's/-[[:digit:]].*$//'`

CP=`emerge -p --nodeps $FIX \
| grep 'ebuild ' \
| tail -n 2 \
| head -n 1 \
| sed -e 's/\[ebuild.......\]\ //' \
      -e 's/ //g'`

CPN=`echo $CP \
| sed -e 's/\[[[digit:]].*\]//' \
      -e 's/-[[:digit:]].*$//'`

PN=`echo $CPN | cut -d/ -f2`
GP="http://gentoo-portage.com"
wget -qc $GP/$CPN
HTTP="$GP`sed -n 's/.*href="\([^"]\+\).*/\1/gp' $PN | grep ebuild | head -n 1`"
P=`echo $HTTP | sed 's/%2F/\//g' | cut -d/ -f6`
EBUILD="/usr/portage/$CPN/$P"
rm -f $PN 2> /dev/null

if [ "`grep epatch echoBUILD`" != "" ]
 then
# a taky přichází problém
  for F in `grep epatch echoBUILD | sed -n 's/.*"\([^"]\+\).*/\1/gp' | sed 's/${FILESDIR}//g'`
  do
   PATCH="/usr/portage/$CPN/files${F}"
   echo $PATCH
   # další, zatím nepodstatný příkazy
  done
fi
Díky tomu to na mě vysype
/usr/portage/sys-apps/hal/files/${P}-RBC.patch
/usr/portage/sys-apps/hal/files/${PN}-0.5.1-old_storage_policy.patch
Jenže já tam ty proměnný uvedený mám a on je nevymění! Až když debuguju po jednom řádku v terminálu, tak zjistím, že když pak ještě řeknu:
echo /usr/portage/sys-apps/hal/files/${P}-RBC.patch
echo /usr/portage/sys-apps/hal/files/${PN}-0.5.1-old_storage_policy.patch
tak to vymění správně, ale jakmile to zapíšu do skriptu, zase to samý. :-( Achjo. Nevíte co s tím?

PS: Pokud vás zajímá, co je zač ten skript, vydržte, protože když s ním nebudou další problémy budu o něm informovat v blogu.

“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon

Odpovědi

28.12.2005 01:46 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: Bash: Nahrazení $P obsahem proměnný uvnitř for cyklu
Nebyla by ukázka, jak vlastně vypadá ten soubor echoBUILD? Ne každý zná Gentoo tak detailně, aby si to dokázal z hlavy představit.

Jinak místo

  if [ "`grep epatch echoBUILD`" != "" ]; then
je jednodušší (a efektivnější)
  if grep -q epatch echoBUILD; then
David Watzke avatar 28.12.2005 01:48 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Bash: Nahrazení $P obsahem proměnný uvnitř for cyklu
Já jsem... to zrovna chtěl napsat. Než jsem to poslal, nahrazoval jsem trochu. Má to být $EBUILD. :-( Takže to je ebuild.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
David Watzke avatar 28.12.2005 01:50 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Bash: Nahrazení $P obsahem proměnný uvnitř for cyklu
Ten si mimochodem můžeš nechat zobrazit na gentoo-portage.com. Namátkou třeba takovej...
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
28.12.2005 02:25 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: Bash: Nahrazení $P obsahem proměnný uvnitř for cyklu
No tak to je celkem jasné. Výsledkem expanze proměnné F je sice něco, co sice obsahuje znaky '$', ale ty už se samozřejmě znovu neexpandují, jinak byste mohl shell triviálně poslat do nekonečné smyčky a nebylo by možné jako výsledek expanze dostat nic, co obsahuje '$'. Napadají mne tři možnosti:
  1. použít eval
  2. výsledek toho sedu doplnit o přiřazení a includovat
  3. nechat si ty proměnné nahradit rovnou tím sedem
Pokud jsou tam vždy jen P a PN, přikláněl bych se ke třetí variantě. První dvě jsou tak trochu "o hubu".
David Watzke avatar 28.12.2005 02:39 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Bash: Nahrazení $P obsahem proměnný uvnitř for cyklu
Jsou ty vždy jen P a PN. Jenže je tu problém. Jak to nahradím sedem, když $P a $PN jsou zase jen proměnný? :(
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
28.12.2005 03:16 Dunric | skóre: 21
Rozbalit Rozbalit vše Re: Bash: Nahrazení $P obsahem proměnný uvnitř for cyklu
Např. takto ?
... | sed "s/\${P}/${P}/g"
In the garden sleeps a messenger ·
David Watzke avatar 28.12.2005 03:30 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Bash: Nahrazení $P obsahem proměnný uvnitř for cyklu
Funguje, dík.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
David Watzke avatar 28.12.2005 01:52 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Bash: Nahrazení $P obsahem proměnný uvnitř for cyklu
Možná bude vhodnější, když vám ukážu celý soubor. Tady je.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon

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.