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

Nadace Cloud Native Computing Foundation (CNCF), jejíž cílem je usnadnit spolupráci při vývoji a zavádění nových cloudových technologií, projekt konsorcia Linux Foundation, organizovala od 10. do 13. prosince v Seattlu konferenci KubeCon + CloudNativeCon North America 2018. Shrnutí dění na konferenci v příspěvku na blogu. V úvodu konference společnost Red Hat věnovala této nadaci distribuovanou key-value databázi etcd. Jedná se o

… více »
Ladislav Hagara | Komentářů: 0
14.12. 14:33 | Nová verze

Byla vydána nová verze 1.30 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a animovanými gify v poznámkách k vydání.

Ladislav Hagara | Komentářů: 2
14.12. 14:22 | Nová verze

Deset dnů po představení beta verze byla vydána stabilní verze Steam Linku pro Raspberry Pi umožňující streamovat hry ve službě Steam z počítače na televizní obrazovku.

Ladislav Hagara | Komentářů: 9
13.12. 20:00 | Nová verze

Byla vydána (YouTube) verze 2018.3 multiplatformního herního enginu Unity (Wikipedie). Přehled novinek i s videoukázkami v příspěvku na blogu a v poznámkách k vydání.

Ladislav Hagara | Komentářů: 0
13.12. 19:33 | Nová verze

Byla vydána verze 18.12.0 KDE Aplikací (KDE Applications). Přehled novinek v kompletním seznamu změn a na stránce s dalšími informacemi. Správce souborů Dolphin umí nově například zobrazovat náhledy dokumentů vytvořených v LibreOffice a aplikací ve formátu AppImage. Konsole plně podporuje obrázkové znaky emoji. V Okularu lze k pdf souborům přidávat poznámky.

Ladislav Hagara | Komentářů: 12
13.12. 17:11 | Nová verze

Byla vydána nová stabilní verze 2.2 (2.2.1388.34) webového prohlížeče Vivaldi (Wikipedie). Z novinek vývojáři zdůrazňují například vylepšení správy listů - vybrané listy lze uložit jako relaci, možnost zobrazení klávesových zkratek určených webovou stránkou nebo možnost přehrávání videí v režimu obrazu v obraze. Nejnovější Vivaldi je postaveno na Chromiu 71.0.3578.85.

Ladislav Hagara | Komentářů: 9
13.12. 14:22 | Nová verze

Po 4 měsících vývoje od vydání verze 3.0.0 byla vydána nová verze 3.1.0 otevřeného emulátoru procesorů a virtualizačního nástroje QEMU (Wikipedie). Přispělo 189 vývojářů. Provedeno bylo více než 1 900 commitů. Přehled úprav a nových vlastností v seznamu změn.

Ladislav Hagara | Komentářů: 1
13.12. 01:32 | Nová verze

Letos bylo v komunitě Mageia hodně změn. Po volbě nových vedoucích přišla velká aktualizace a krátce na to udržovací verze 6.1. 7.12., dle plánu, vyšla Mageia s číslem 7 v její první beta verzi. Chyby můžete hlásit v bugzille. Chyby v českých překladech pak na fóru české komunity.

Joelp | Komentářů: 3
13.12. 00:11 | Zajímavý projekt

Kvůli rychlejšímu vývojovému cyklu byla přemístěna Cinelerra-gg. Cinelerra-gg je fork Cinelerry-hv. Některé rozdíly forků popisuje sám hlavní vývojář William Morrow (aka GoodGuy). Není zde popsán i fork Lumiera, zřejmě kvůli zatím nepoužitelnému stavu.

… více »
D81 | Komentářů: 3
12.12. 19:11 | Nová verze

Do aplikace pro instant messaging Telegram (Wikipedie) lze nově nahrát češtinu. Více v příspěvku na blogu Telegramu.

Ladislav Hagara | Komentářů: 7
Chystáte se přejít na Wayland na „desktopu“?
 (24%)
 (8%)
 (12%)
 (31%)
 (25%)
Celkem 134 hlasů
 Komentářů: 19, poslední 14.12. 18:37
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: 183×

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.