Portál AbcLinuxu, 1. června 2025 05:28


Dotaz: Bash - dosazení promenné do názvu proměnné

17.8.2007 20:23 tom112233 | skóre: 21 | blog: tpikalek | Brno
Bash - dosazení promenné do názvu proměnné
Přečteno: 694×
Odpovědět | Admin
Potřebuji v Bashi udělat něco podobného, jako je tohle v PHP:
$a="Ahoj";
$b="a";
$c="b"
echo $$$c;
Tento příklad vypíše "Ahoj". Mě jde o to "$$$c", tj. dosazování jedné proměnné do názvu druhé proměnné. Již zmíněné $$$c v Bashi nefunguje, protože "$$" vypíše PID shelu a zbylé "$c" vypíše prostě "b".

Jak to udělat?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

17.8.2007 21:35 zelial | skóre: 21
Rozbalit Rozbalit vše Re: Bash - dosazení promenné do názvu proměnné
Odpovědět | | Sbalit | Link | Blokovat | Admin
vypotil jsem tohle:
bash$ a=ahoj
bash$ b=a
bash$ c=b
bash$ eval eval echo \\$\$$c
ahoj
bash$
hlavne po me prosimte nechtej, abych vysvetloval co a proc to dela. a vubec, kdyby neco, tak to psal nekdo jiny.
18.8.2007 12:03 J.
Rozbalit Rozbalit vše Re: Bash - dosazení promenné do názvu proměnné
Odpovědět | | Sbalit | Link | Blokovat | Admin

Ciastocne riesenie je:

  ${!b}

co je ekvivalent "$$b", ale neda sa tak riesit "$$$c" bez pouzitia medzikroku (aspon ja neviem akym sposobom to zapisat).

To $$$c by potom bolo treba riesit asi nejako:

  a="Ahoj"
  b="a"
  c="b"
  x=${!c}
  echo ${!x}
18.8.2007 12:58 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Bash - dosazení promenné do názvu proměnné

eval "echo \$${!c}"

Ale je to větší čuňárna, než to provést ve dvou krocích.

18.8.2007 14:18 tom112233 | skóre: 21 | blog: tpikalek | Brno
Rozbalit Rozbalit vše Re: Bash - dosazení promenné do názvu proměnné
Odpovědět | | Sbalit | Link | Blokovat | Admin
Děkuji...

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.