Boşluk içeren dosya adları ile çalışmak için dizi kullanımını öneren Bash komut dosyası kılavuzlarını gördüm. DashAsBinSh ancak dizileri taşınabilir olmadığını önerir, bu yüzden boşluk içerebilecek dosya adları listeleri ile çalışmak için POSIX uyumlu bir yol arıyorum.
Ben aşağıdaki örnek komut dosyasını değiştirmek için arıyorum echo
foo/target/a.jar
foo/target/b.jar
bar/target/lol whitespace.jar
İşte senaryo
#!/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