Problemas con asignación de valores en un array

Iniciado por Neofito_2017, 3 Abril 2017, 17:06 PM

0 Miembros y 1 Visitante están viendo este tema.

Neofito_2017

Hola a todos  :)

Tengo un problema en un script que no se resolver. Se trata de lo siguiente:

a) I=0; lspci | grep Ethernet | cut -d ":" -f3 | while read LINEA; do
b) CONTROLADOR_DE_RED[$I]=`echo $LINEA`
c) echo -e "Controlador de red: {CONTROLADOR_DE_RED[$I]}\n"
d) echo -e "Linea leída: $LINEA\n\n\n"
e) ((I++))
f) done
g) I=0; echo -e "$I) ${CONTROLADOR_DE_RED[$I]} \n"

¿Por qué en la línea g) el valor de CONTROLADOR_DE_RED[0] me aparece en blanco si en la línea c) lo muestra correctamente tanto en el array como en la línea leída?

El mismo problema aquí:
Código (bash) [Seleccionar]
for (( M=0; M<$UNIDADES; M++ )); do
UNIDAD_ALMACENAMIENTO[$M,0]=${UNIDAD[$M]}
echo "$M,0: ${UNIDAD_ALMACENAMIENTO[$M,0]}"
# Leerá las cuatro primeras líneas mostradas por el comando
N=1
parted -s /dev/${UNIDAD[$M]} print free|head -n4|cut -d":" -f2|sed 's/^[ \t]*//;s/[ \t]*$//'|while read LINEA; do
UNIDAD_ALMACENAMIENTO[$M,$N]=${LINEA}
echo "$M,$N: ${UNIDAD_ALMACENAMIENTO[$M,$N]}"
((N++))
done
done
echo "========================================================================"
echo "Unidad: ${UNIDAD_ALMACENAMIENTO[0,0]}"
echo "Modelo: ${UNIDAD_ALMACENAMIENTO[0,1]}"
echo "Capacidad: ${UNIDAD_ALMACENAMIENTO[0,2]}"
echo "Tamaño del sector: ${UNIDAD_ALMACENAMIENTO[0,3]}"
echo "Tipo de partición: ${UNIDAD_ALMACENAMIENTO[0,4]}"
echo "========================================================================"
echo "Unidad: ${UNIDAD_ALMACENAMIENTO[1,0]}"
echo "Modelo: ${UNIDAD_ALMACENAMIENTO[1,1]}"
echo "Capacidad: ${UNIDAD_ALMACENAMIENTO[1,2]}"
echo "Tamaño del sector: ${UNIDAD_ALMACENAMIENTO[1,3]}"
echo "Tipo de partición: ${UNIDAD_ALMACENAMIENTO[1,4]}"


He probado a cambiar por:

done < `parted -s /dev/${UNIDAD[$M]} print free|head -n4|cut -d":" -f2|sed 's/^[ \t]*//;s/[ \t]*$//'`

y tampoco consigo asignar valores a los elementos de la matriz.

Para los arrays, he utilizado declare -a  y declare -A.

El resultado obtenido es mientras se ejecutan los bucles:

0,0: sda
0,1: ATA TOSHIBA MK1655GS (scsi)
0,2: 160GB
0,3: 512B/512B
0,4: msdos
1,0: sdb
1,1: Generic Flash Disk (scsi)
1,2: 1845MB
1,3: 512B/512B
1,4: loop
========================================================================
Al terminar los dos bucles:

Unidad: sda
Modelo:
Capacidad:
Tamaño del sector:
Tipo de partición:
========================================================================
Unidad: sdb
Modelo:
Capacidad:
Tamaño del sector:
Tipo de partición:

Dentro del bucle los valores son correctos pero al terminar el bucle, todo vuelve a cero, excepto lo asignado antes del segundo bucle.

¿Alguien puede ayudarme por favor? Muchísmas gracias a todos  por adelantado.