Ich habe Bash-Skripthandbücher gesehen, die die Verwendung von Arrays für die Arbeit mit Dateinamen empfehlen, die Leerzeichen enthalten. DashAsBinSh schlägt jedoch vor, dass Arrays nicht portierbar sind. Daher suche ich nach einer POSIX-kompatiblen Möglichkeit, mit Listen von Dateinamen zu arbeiten, die möglicherweise Leerzeichen enthalten.
Ich bin auf der Suche, das folgende Beispielskript zu ändern, damit es würde echo
foo/target/a.jar
foo/target/b.jar
bar/target/lol whitespace.jar
Hier ist das Drehbuch
#!/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