Существуют разные версии команды echo , и разные версии могут по-разному обрабатывать свои необязательные аргументы. Использование любых необязательных аргументов с echo не переносимо. Самое простое решение - добавить еще одно echo , например так:
echo >> $logs/backups.log
echo "Backup of ${i%%/} successful" >> $logs/backups.log
или вот так:
{
echo
echo "Backup of ${i%%/} successful"
} >> $logs/backups.log
В качестве альтернативы, вы можете использовать printf вместо echo , что в наши дни предпочтительнее, по крайней мере, для переносимости.
printf "\nBackup of ${i%%/} successful\n" >> $logs/backups.log
Все эти решения будут помещать новые строки между каждой строкой, как и соглашение Unix. Некоторые редакторы Windows понимают, что одиночные символы новой строки означают конец строки. Другие, такие как «Блокнот», не отображают файл в виде одной строки.
Одним из решений этой проблемы является снова использовать printf .
printf "\r\nBackup of ${i%%/} successful\r\n" >> $logs/backups.log
Вопреки другим рекомендациям, лучше не пытаться встраивать буквенные управляющие символы в команды echo или printf . Их трудно увидеть, сложно редактировать, и они могут испортить отображение вашего скрипта, если вы просто cat ним.
Обратите внимание, что во всем вышесказанном я предполагал, что вы хотели разрыва строки как до, так и после вашей "успешной" заметки. Если это не было вашим намерением, измените эти команды соответствующим образом.