Saya telah melihat panduan skrip Bash menyarankan penggunaan array untuk bekerja dengan nama file yang mengandung spasi. Namun DashAsBinSh menyarankan bahwa array tidak portabel sehingga saya mencari cara yang sesuai dengan POSIX untuk bekerja dengan daftar nama file yang mungkin mengandung spasi.
Saya ingin memodifikasi skrip contoh di bawah ini agar dapat echo
foo/target/a.jar
foo/target/b.jar
bar/target/lol whitespace.jar
Ini skripnya
#!/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