Portál AbcLinuxu, 10. května 2025 02:44
1p=(1h 2h 3h 4h) 1h="xterm thunar xclock" 2h="xterm mousepad" 3h="xterm gedit" atd.A V druhé části potřebuji tyto proměné vytáhnout. Základ mám. Script mi zkontroluje jednu z hodnot v poli a nyní potřebuji jen, aby se provedli příkazy, které nastartují to co mají. Mám uživatelský vstup, který je zapsán v proměné x a který se rovná jedné hodnotě v poli .
read x # x == 1h, nebo 2h, nebo 3h atd.A nyní potřebuji, aby se nastartovaly příslušné programy a právě kvůly následné editaci se chci vyhnout, abych v této části použil něco jako
if [ $x == $1h ] atd.Zkošel jsem eval, nebo něco jako ${$x} ale nic mi nefunguje. Možná jdu na to úplně blbě a proto děkuji za každou radu.
Pokud jsem pochopil Vas dotaz spravne, tak potrebujete z
h1="hodnota 1" h2="hodnota 2" h3="hodnota 3" read x ...tak po zadani napr. "h2" chcete do pomocne promenne ulozit hodnotu promenne $h2.
eval y=\$$xa pak uz si s promennou $y delejte co chcete.
p1=(h1 h2 h3) h1="xterm"atd
read xPrověřím, že x obsaženo v poli pomocí for i in .... Nyní mám
[ "$x" = "$i" ]A problém
$x #h1 neni prikaz a hlavne nevim jestli se $x == h1 nebo se == h2 nebo ... eval y='$'$x #opet h1 neni prikazVím že v $x je jedna z hodnot, které jsou v poli, ale nejsu schopen spustit xterm.
x=xterm $xAle to funguje. Druhý způsob, tak to mohu chápat, je, že nedokážeš získat prvek pole:
p=(a b c) i=1 echo ${p1[$i]}ale nevidím, že bys iteroval přes ta pole numericky. Třetí možnost je získání hodnoty dvojité reference:
x=xterm y=x echo ${!y}ale to už tu bylo zodpovězeno. Pak už fakt nevím, na co se ptáš.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.