Linux/Unix Shell Scripting - asignación dinámica de array

   
Vista:

asignación dinámica de array

Publicado por Vi (4 intervenciones) el 29/06/2012 10:10:26
hola,

Tengo un array {myarray[*]} que contiene nombres de archivos. He de buscar si existen o no esos archivos en los directorios inferiores. Algo así:

for i in `seq 0 ${#myarray[*]}`
do
echo "Buscando archivo ${myarray[i]}"
ARCHIVOC=$`find ./ -name ${myarray[i]} | wc -l`
#evalua si lo ha encontrado
if [ $ARCHIVOC -gt 0 ]; then echo Existe; else echo No existe; fi
done

Pues bien, ARCHIVOC no recoge el resultado del find como por ejemplo:

ARCHIVOC=$`find ./ -name archivo.txt | wc -l`

No sé si me he explicado. Ayuda, please.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

asignación dinámica de array

Publicado por xve (254 intervenciones) el 29/06/2012 14:10:23
Hola, en principio el código lo veo bien, lo único que veo un poco extraño, es el $ después del = delante del find... yo lo pondría así:
1
ARCHIVOC=`find ./ -name ${myarray[i]} | wc -l`

Si no voy equivocado, el valor de la variable $ARCHIVOC siempre sera un $ seguido de un numero ($0 si no hay ninguna coincidencia)

Puedes probar a quitar el símbolo del $?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

asignación dinámica de array

Publicado por Vi (4 intervenciones) el 02/07/2012 08:26:29
No sé qué ocurre pero algo falla. Lo resumo.
Esto:
ARCHIVOC=`find ./ -name "archivo.txt" | wc -l`
devuelve:
echo $ARCHIVOC
1

Sin embargo esto:
ARCHIVOC=`find ./ -name ${myarray[1]} | wc -l`
devuelve:
echo $ARCHIVOC
0
y:
echo ${myarray[1]}
"archivo.txt"

Ni idea, pero no lo está encontrando.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

asignación dinámica de array

Publicado por Tom (253 intervenciones) el 02/07/2012 09:22:33
1
ARCHIVOC=$(find . -name "${myarray[1]}" | wc -l)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

asignación dinámica de array

Publicado por Vi (4 intervenciones) el 02/07/2012 12:01:59
Nada, tampoco rula.

:) echo $ARCHIVOC
0
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

asignación dinámica de array

Publicado por Vi (4 intervenciones) el 03/07/2012 10:01:03
Resuelto:

. . .

aaa=${myarray[i]}
ARCHIVOC=$(find . -name $aaa | wc -l)

. . .

echo $ARCHIVOC
1

gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar