Vi guias de script do Bash sugerindo o uso de matriz para trabalhar com nomes de arquivos que contenham espaço em branco. No entanto, o DashAsBinSh sugere que as matrizes não são portáveis, por isso estou procurando uma maneira compatível com POSIX de trabalhar com listas de nomes de arquivos que podem conter espaços em branco.
Eu estou olhando para modificar o script de exemplo abaixo para que ele echo
foo/target/a.jar
foo/target/b.jar
bar/target/lol whitespace.jar
Aqui está o script
#!/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