Tôi đã thấy các hướng dẫn kịch bản Bash đề xuất sử dụng mảng để làm việc với tên tệp có chứa khoảng trắng. Tuy nhiên, DashAsBinSh gợi ý rằng các mảng không thể di động được nên tôi đang tìm cách làm việc tuân thủ POSIX với danh sách tên tệp có thể chứa khoảng trắng.
Tôi đang tìm cách sửa đổi kịch bản ví dụ dưới đây để nó sẽ echo
foo/target/a.jar
foo/target/b.jar
bar/target/lol whitespace.jar
Đây là kịch bản
#!/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