Portál AbcLinuxu, 12. května 2025 02:50
#! /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` $ $var2Jak 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:
#!/bin/bash var1=var2 var2=vysledek eval echo "\$${var1}", ale asi to ani moc nedoporučuju
eval echo $`echo $var1`Ale doporucovcal bych se eval vyhnout obloukem.
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.
$ var1=var2 $ var2=vysledek $ echo ${!var1} vysledek
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.