Ho visto le guide di scripting di Bash che suggeriscono l'uso dell'array per lavorare con nomi di file contenenti spazi bianchi. DashAsBinSh suggerisce tuttavia che gli array non sono portatili, quindi sto cercando un modo conforme a POSIX di lavorare con elenchi di nomi di file che possono contenere spazi bianchi.
Sto cercando di modificare lo script di esempio di seguito in modo che lo farebbe echo
foo/target/a.jar
foo/target/b.jar
bar/target/lol whitespace.jar
Ecco la sceneggiatura
#!/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