Portál AbcLinuxu, 12. května 2025 02:50

Dotaz: Bash - zobazení hodnoty proměnné, která byla předána v jiné proměnné

7.4.2016 13:36 Belpir
Bash - zobazení hodnoty proměnné, která byla předána v jiné proměnné
Přečteno: 715×
Odpovědět | Admin
Zdravím, lze v bashi zobrazit obsah proměnné, jejíž název byl předán jako hodnota proměnné, viz např:
#! /bin/bash
var1=var2
var2=vysledek

#nyní potřebuji vypsat hodnotu "vysledek", voláním proměnné var2, jako návratové hodnoty volání var1 zkoušel jsem:
#toto vrací PID aktuálního procesu (proměnná $$) zřetězený s názvem předané proměnné:
echo $$var1
$ 25760var1

#toto sice vrací $var2 , ale nevypíše to její hodnotu, pouze vytiskne její název:
echo $`echo $var1`
$ $var2

Jak tedy tímto způsobem vypsat obsah proměnné var2? Hledám způsob jak vyhledat ve skriptu, jestli existuje název proměnné, který byl zadán jako argument skriptu $1, pokud existuje, zavolej jí a vrať její hodnotu. V jiném jazyce bych použil slovník/asociativní pole, ale syntaxe tohoto datového typu je v bashi hrozně pitomá.

Děkuji

Řešení dotazu:


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

Odpovědi

7.4.2016 14:08 blondak | skóre: 36 | blog: Blondak | Čáslav
Rozbalit Rozbalit vše Re: Bash - zobazení hodnoty proměnné, která byla předána v jiné proměnné
Odpovědět | | Sbalit | Link | Blokovat | Admin
#!/bin/bash
var1=var2
var2=vysledek

eval echo "\$${var1}"
, ale asi to ani moc nedoporučuju
Každý problém ma své logické, snadno pochopitelné nesprávné řešení.
7.4.2016 14:19 NN
Rozbalit Rozbalit vše Re: Bash - zobazení hodnoty proměnné, která byla předána v jiné proměnné
Odpovědět | | Sbalit | Link | Blokovat | Admin
eval echo $`echo $var1`
Ale doporucovcal bych se eval vyhnout obloukem.
7.4.2016 23:13 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Bash - zobazení hodnoty proměnné, která byla předána v jiné proměnné
Ale doporucovcal bych se eval vyhnout obloukem.

Souhlasím. Moje zkušenost je, že pokud člověk zjistí, že něco není schopen v bashi udělat bez eval, je to znamení, že pro danou úlohu vůbec neměl použít bash.

Řešení 2× (mimi.vx, Michal Kubeček)
7.4.2016 23:08 Ondřej Kubečka | skóre: 29 | blog: datlovo | Ulm
Rozbalit Rozbalit vše Re: Bash - zobazení hodnoty proměnné, která byla předána v jiné proměnné
Odpovědět | | Sbalit | Link | Blokovat | Admin
V bashi je to snadné, ten umí nepřímé odkazy:
$ var1=var2
$ var2=vysledek
$ echo ${!var1}
vysledek
http://prirucka.ujc.cas.cz/?ref=785&id=790.
14.4.2016 13:14 Belpir
Rozbalit Rozbalit vše Re: Bash - zobazení hodnoty proměnné, která byla předána v jiné proměnné
Velice děkuji, funguje, eval se vyhnu.

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.