Portál AbcLinuxu, 26. dubna 2024 01:10


Dotaz: skript v shellu

6.7.2003 17:22 ik
skript v shellu
Přečteno: 102×
Odpovědět | Admin
Ahoj, potreboval bych si napsat jednoduchy skript, ale zarazil jsem se na nasledujicim problemu (syntaxi). Uvedu priklad:

i = 1
cislo_1 = 100
cislo_2 = 200
cislo_3 = 300

Cislo $i se bude postupne zvetsovat o jednicku a ja bych potreboval, aby se mi vypisovaly hodnoty cisel 1 az 3, neco jako $(cislo_$i). Takto to ale bohuzel nefunguje.

Diky za pomoc ...

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

Odpovědi

6.7.2003 19:34 Jáchym Čepický | skóre: 29 | blog: U_Jachyma
Rozbalit Rozbalit vše skript v shellu
Odpovědět | | Sbalit | Link | Blokovat | Admin
ahoj,
bojím se, to co potřebuješ (array) bash neumí.

Zkusil bych to perlem (první řádek může být u tebe jinej):

#!/usr/bin/perl -w

my @cislo = ();
my $i = 0;

for($i = 0; $i <=2; $i++){
    $cislo[$i] = 100*($i+1);
    print "$cislo[$i]\n";
}
nebo trochu nepřehlednější verze:
#!/usr/bin/perl -w
for(1 .. 3){$cislo[$_]=100*$_; print "$cislo[$_]\n";}
což by se v bashi dalo použít jako příkaz (zkus to samostatně):
$ perl  -e 'for(1 .. 3){$cislo[$_]=100*$_; print "$cislo[$_]\n";}'
čímž dosáhneš úplně stejnýho výsledku.

Je možné, že i v bashi se daj používat arrays, ale nevím o tom

Jáchym

6.7.2003 21:43 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše skript v shellu
v bashi lze používat pole, viz bash(1) a hledej Arrays... základní triky: declare -a foo deklaruje foo jako pole foo[5]=42 dá do prvku s indexem 5 hodnotu 42 foo=(10 20 30) naplní foo hodnotami 10, 20, 30 foo=([1]=10 [10]=20 [100]=30) naplní pole hodnotami foo[1]=10, foo[10]=20, foo[100]=30 echo ${foo[1]} vypíše 10 (hodnotu na pozici jedna) echo ${foo[*]} resp. echo ${foo[@]} vypíše všechny prvky -- to, o čem jsi psal původně, tj. symbolické reference (v jedné proměnné mám jméno druhé a chci hodnotu té druhé) jde také: bar=10 quux=bar echo ${!quux} pak vypíše hodnotu 10
6.7.2003 22:18 RWS
Rozbalit Rozbalit vše skript v shellu
Odpovědět | | Sbalit | Link | Blokovat | Admin
zkus
eval echo $( echo "\$cislo_$i" )
6.7.2003 22:52 unchallenger | skóre: 69 | blog: unchallenger
Rozbalit Rozbalit vše skript v shellu
z="cislo_$i" echo ${!z} je čistší metoda
7.7.2003 10:16 ik
Rozbalit Rozbalit vše skript v shellu
Diky moc za vsechny rady ...
7.7.2003 10:45 Agent Smith
Rozbalit Rozbalit vše skript v shellu
Odpovědět | | Sbalit | Link | Blokovat | Admin
i=1 
echo cislo_${i}
vyraz ${} vyexpanduje vyraz v zavorce

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.