Estoy tratando de enumerar todos los archivos en una carpeta y agregarlos a una variable, separados por un punto y coma.
Entonces necesito repetir la variable en un archivo. Este es mi fragmento
#!/bin/bash
SEP=";"
LIB="lib/"
DEP=""
ls -t1 target/lib/ | while read -r FILE
do
DEP=$DEP$LIB$FILE$SEP
done
echo "$DEP"
los DEP
variable se llena dentro del bucle while, siEcho desde allí puedo ver el resultado correcto. Fuera del bucle, la variable se "borra" y no hace eco de nada. ¿Cómo mantengo el resultado? ¿Qué estoy haciendo mal?
OsX 10.8.3 GNU bash, versión 3.2.48 (1) -release (x86_64-apple-darwin12) Copyright (C) 2007 Free Software Foundation, Inc.
Respuestas
4 para la respuesta № 1El problema no es el bucle while sino la tubería. Todo después de la |
El símbolo se ejecuta en una subshell. Para solucionar el problema, use la sustitución del proceso:
while read -r FILE
# ...
done < <(ls -t1 target/lib/)