J'ai vu des guides de script Bash suggérant l'utilisation d'un tableau pour travailler avec des noms de fichiers contenant des espaces. DashAsBinSh suggère cependant que les tableaux ne sont pas portables, donc je recherche une manière compatible POSIX de travailler avec des listes de noms de fichiers pouvant contenir des espaces.
Je cherche à modifier l'exemple de script ci-dessous afin qu'il echo
foo/target/a.jar
foo/target/b.jar
bar/target/lol whitespace.jar
Voici le 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