Jelou, jelou, hola! [jaja]
Enas, estaba haciendo un par de scriptillos practicando y tal el uso de arrays, pero he llegado a un punto en que sólo recibo errores :-S
El código es bien sencillo, declaro unos arrays, los relleno grepeando un archivo y después empieza a hacer cálculos simples con ellos..
El código se resume así:
busca_array_id=`ids_objetos`
for i in $(seq 1 1 20)
do
total_disp[$i]=0
total_act[$i]=0
done
for Id in $busca_array_id
do
documento=`echo fichero_salida`
disponibles[$Id]=`cat $documento | .... | grep ^[0-9]`
actuales[$Id]=`cat $documento | .... | grep ^[0-9]`
coste[$Id]=`cat $documento | ...| grep ^[0-9]`
done
#Ya tenemos los arrays, ahora calculamos el total.... de uno de ellos..
indice=1
for i in ${disponibles[$Id]}
do
aux=`echo "${total_disp[$indice]}"`
total_disp[$indice]=`echo $aux \+ $i | bc -l`
indice=`echo $indice \+ 1 | bc -l`
done
El código funciona perfectamente en mi entorno de prueba (un cygwin antiguo, pero falla estrepitosamente en los entornos donde correrá: cygwin nuevo y mi debian)
El error: en la suma de total_disp =>
(standard in) 1: Ilegal character: ^M
Es como si se colara dentro del array el Ctrl-M.... pero si listo el array está correcto....
Por supuesto he intentando mil trillones de pruebas... por ejemplo cambiando el bucle a:
for i in ${disponibles[$Id]}
do
[ -z $i ] || expr $i \+ 10
done
Resultando el siguiente error:
expr: non-numeric argument
expr: non-numeric argument
.....
Eso sí, si listo el array con :
for i in ${disponibles[$Id]};do; echo $i;done
Se muestran bien los valores de las variables...
Otro ejemplo:
for i in ${disponibles[$Id]}
do
typeset -i i
done
Donde me escupe:
")syntax error: invalid arithmetic operator (error token is"
Así ke no se como tirar... ah otra cosa, si hago un:
echo ${disponibles[$Id]} no hace bien el echo... no lista bien los datos que contiene el array... de una cadena compuesta por:
2150
1075
65
49
40
32
28
18
0
0
0
0
0
0
0
0
0
0
0
0
Saca por pantalla 0055...
Y no sé que cosas más, he probado con typeset -i en multitud de lados... cambiado el algoritmo de muy diversas maneras y nada... DAMM IT