/ / Bash shell está "limpiando" una variable después del bucle while, ¿cómo obtener todos los archivos en una carpeta dentro de una variable? - macos, bash

Bash Shell está "limpiando" una variable después del ciclo while, ¿cómo obtener todos los archivos en una carpeta dentro de una variable? - macos, bash

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 № 1

El 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/)