Часть моего makefile
выглядит следующим образом:Прочитайте каждую строку целиком, независимо от пространства
list: all
for f in \
`less fetch/list.txt`; \
do \
echo $$f; \
...
done
fetch/list.txt
содержит список файлов:
path/file1.ml
path/file2.ml
path/file 3.ml
path/file 4.ml
Проблема заключается в том, даже если пространство допускается в имя файла, make list
показывает:
path/file1.ml
path/file2.ml
path/file
3.ml
path/file
4.ml
Кто-нибудь k теперь, чтобы каждая строка была прочитана целиком, независимо от пробелов?
Это битва. Вы определенно хотите 'read -r' в случае, если в строках есть обратные косые черты, а также вам нужно знать, что чтение всегда разделяет символы верхнего и нижнего символов IFS. Поэтому вам действительно нужно: 'while IFS = read -r ...'. Или вы можете использовать 'mapfile/readarray -t' – rici
@rici спасибо, обновили ответ с вашими предложениями. –