bash script & array
Miroslav BENES
miroslav.benes na zdas.cz
Pondělí Leden 17 15:05:21 CET 2005
Přeji krásný den !
Pokouším se napsat jednoduchý skriptík v bash-i, ale nějak se mi nedaří.
Prosím o nakopnutí kde dělám chybu. Manuál jsem si prošel, ale toto
chování se mi zdá být v rozporu s logikou :
Skript:
------
#!/bin/bash
declare -a POKUS
POKUS[1]=Ahoj
POKUS[2]=tady
POKUS[3]=Lojza
POKUS[4]=jak
POKUS[5]=se
POKUS[6]=mas
for (( ID = 0 ; $ID <= 6 ; ID += 1 )) ; do
echo ${POKUS[$ID]}
done
echo
echo "2" | while read ID; do
echo "nacteno $ID"
echo "pred zmenou : POKUS[$ID] = ${POKUS[$ID]}"
POKUS[$ID]=XX
echo "po zmene : POKUS[$ID] = ${POKUS[$ID]}"
done
echo
for (( ID = 0 ; $ID <= 6 ; ID += 1 )) ; do
echo ${POKUS[$ID]}
done
Výsledek:
------------
$ ~/bin/tt
Ahoj
tady
Lojza
jak
se
mas
nacteno 2
pred zmenou : POKUS[2] = tady
po zmene : POKUS[2] = XX
Ahoj
tady
Lojza
jak
se
mas
Dotazy:
------
Mám to chápat tak, že se před každým cyklem udělají kopie polí, které
jsou dostupné jen v tomto cyklu a po jeho skončení zanikají ?!?
A jak by se dal vyřešit problém "volné IP adresy" ? Pro upřesnění -
původní záměr byl sledovat dlouhodobě "živé" adresy (z rozsahu
192.168.něco.xxx). Tyto se střádají do souboru a dají se vypsat. Ale jak
bych si mohl jednoduše z těchto údajů vygenerovat opačnou množinu - tj.
nepoužité IP adresy ? Jako nejjednodušší (i když ne příliš optimální) se
mi zdál tento postup :
- udělám si pole o 256 prvcích
- ziicializuji všechny prvky na 0
- podle seznamu "živých" IP adres budu v poli nastavovat prvky na 1
- vypíšu čísla prvků, která zůstala na 0
Díky předem za každý nápad.
Miroslav BENEŠ
System administrator
ŽĎAS a.s.
Další informace o konferenci Linux