Ada berbagai versi echo
perintah di luar sana dan versi yang berbeda dapat menangani argumen opsional mereka secara berbeda. Menggunakan argumen opsional apa pun dengan echo
tidak portabel. Solusi paling sederhana adalah menambahkan yang lain echo
, seperti ini:
echo >> $logs/backups.log
echo "Backup of ${i%%/} successful" >> $logs/backups.log
atau seperti ini:
{
echo
echo "Backup of ${i%%/} successful"
} >> $logs/backups.log
Atau, Anda bisa menggunakan printf
dari pada echo
, yang disukai hari ini setidaknya untuk portabilitas.
printf "\nBackup of ${i%%/} successful\n" >> $logs/backups.log
Semua solusi itu akan menempatkan baris baru di antara setiap baris, seperti konvensi Unix. Beberapa editor Windows memahami baris baru tunggal berarti end-of-line. Lainnya, seperti Notepad, tidak dan akan menampilkan file Anda sebagai satu baris.
Salah satu solusi untuk masalah itu adalah menggunakan lagi printf
.
printf "\r\nBackup of ${i%%/} successful\r\n" >> $logs/backups.log
Berlawanan dengan rekomendasi lain, yang terbaik adalah tidak mencoba menanamkan karakter kontrol literal ke dalamnya echo
atau printf
perintah. Mereka sulit dilihat, sulit diedit, dan mengacaukan tampilan skrip Anda jika Anda mau cat
saya t.
Catatan dalam semua hal di atas saya berasumsi bahwa Anda ingin istirahat baris sebelum dan sesudah catatan "berhasil" Anda. Jika itu bukan maksud Anda, modifikasi perintah itu sesuai.
\r\n
(Carriage Return + Newline) bukan hanya\n
(Garis baru).