Я пишу скрипт bash для чтения набора файлов по строкам и выполнения некоторых изменений. Начнем с того, что я просто пытаюсь переместить файлы в места резервного копирования и записать их как есть, чтобы проверить, работает ли скрипт. Однако он не копирует последнюю строку каждого файла. Вот фрагмент кода:Bash scripting: почему последняя строка, отсутствующая в этом файле, добавляется?
while IFS= read -r line
do
echo "Line is ***$line***"
echo "$line" >> $POM
done < $POM.backup
Я, очевидно, хотят, чтобы сохранить пробелы при копировании файлов, поэтому я поставил МФС к нулю. Я вижу на выходе, что последняя строка каждого файла читается, но никогда не появляется на выходе.
Я также попытался альтернативный вариант, который делает печать последней строки, но добавляет символ новой строки к нему:
while IFS= read -r line || [ -n "$line" ]
do
echo "Line is ***$line***"
echo "$line" >> $POM
done < $POM.backup
Что такое лучший способ сделать это сделать эту операцию чтения-записи, записывать файлы точно так, как они есть, с правильными пробелами и новыми символами новой строки?
Я вижу, что читается последняя строка, так как она выводится командой echo. Однако он не отображается в новом файле. – Hedley
Тогда '$ POM.backup' может иметь' \ r' перед '\ n' – anubhava
Как это повлияет на запись в новый файл? – Hedley