Существуют разные версии команды 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
ним.
Обратите внимание, что во всем вышесказанном я предполагал, что вы хотели разрыва строки как до, так и после вашей "успешной" заметки. Если это не было вашим намерением, измените эти команды соответствующим образом.