Ciao a tutti,
ho un problema con un mio script bash che non riesco a risolvere. Si tratta di uno script che legge un file e mette la seconda parola di ogni riga dentro un array per poi elaborarlo. Lo script è il seguente:

codice:
declare -a comp_instances=() 
declare -i count=0  

ps faux|grep $DD|grep -v grep| 
while read line; do
    comp_instances[${#comp_instances[*]}]=$(echo $line | awk '{print $2}') 	
    ((count++)) 	
    echo "${#comp_instances[*]} ${comp_instances[@]}" 
done  

echo "${#comp_instances[*]} ${comp_instances[@]} $count"
Lasciando stare cosa fa lo script, il problema riguarda il ciclo for e il fatto che i contenuti inseriti nell'array comp_instances vengono inseriti dentro una variabile dal nome comp_instances che però, una volta concluso il ciclo while, risulta vuota. Per capirci, nell'array di sopra, l'echo dentro il while stampa una cosa del tipo:

codice:
1 12590 
2 12590 12670 
3 12590 12670 12733 
4 12590 12670 12733 12232 
5 12590 12670 12733 12232 32390
mentre l'ultima riga, quell'echo fuori dal ciclo while, stampa

codice:
0  0
Il problema è strano perchè le variabili in bash sono tutte globali che io sappia (a meno che di un local davanti, ma dentro funzioni comunque) e quindi gli elementi inseriti dentro comp_instances dovrebbero essere inseriti nell'array comp_instances dichiarato all'inizio. La cosa strana è che anche senza usare un array il problema rimane: se provo ad usare una stringa e a separare ogni pid con uno spazio, la variabile che contiene tutti i pid viene correttamente elaborata dentro il ciclo while, ma risulta vuota quando questo finisce.

Qualcuno sa gentilmente cosa sto sbagliando?

Grazie,
Rief