He visto guías de scripts de Bash que sugieren el uso de una matriz para trabajar con nombres de archivos que contienen espacios en blanco. Sin embargo, DashAsBinSh sugiere que las matrices no son portátiles, por lo que estoy buscando una forma de trabajar compatible con POSIX con listas de nombres de archivos que pueden contener espacios en blanco.
Estoy buscando modificar el script de ejemplo a continuación para que pueda echo
foo/target/a.jar
foo/target/b.jar
bar/target/lol whitespace.jar
Aquí está el guión
#!/usr/bin/env sh
INPUT="foo/target/a.jar
foo/target/b.jar
bar/target/b.jar
bar/target/lol whitespace.jar"
# this would be produced by a 'ls' command
# We can execute the ls within the script, if it helps
dostuffwith() { echo $1; };
F_LOCATIONS=$INPUT
ALL_FILES=$(for f in $F_LOCATIONS; do echo `basename $f`; done)
ALL_FILES=$(echo "$ALL_FILES" | sort | uniq)
for f in $ALL_FILES
do
fpath=$(echo "$F_LOCATIONS" | grep -m1 $f)
dostuffwith $fpath
done