Baris baru dalam for for

1

Bagaimana saya bisa membuat baris baru dalam for for loop in bash? Saya sudah mencoba echo -e tetapi tidak bekerja. Ketika saya membuka file log semuanya ada dalam satu baris.

for i in */ ; do
    sitefolder="$HOME/domains/${i%%/}/public_html"
    if [ -d "$sitefolder" ]; then
        echo -e "\nBackup of ${i%%/} successfull" >> $logs/backups.log
    fi
done

Apa yang saya lakukan salah? Terima kasih

Alexander Kim
sumber
Tidak yakin, tapi coba \r\n (Carriage Return + Newline) bukan hanya \n (Garis baru).
Ƭᴇcʜιᴇ007
Saya akan mencoba dalam beberapa menit :) akan memberi tahu Anda jika berhasil, terima kasih
Alexander Kim
Bagus, saya akan melemparkannya sebagai jawaban.
Ƭᴇcʜιᴇ007

Jawaban:

1

Kamu bisa memakai CTRL + V bersama lalu tekan J untuk menyematkan baris baru dalam pernyataan gema.

Pada sistem Unix dan Linux CTRL + V menunjukkan bahwa karakter yang mengikuti ditafsirkan sebagai karakter kontrol.

suspectus
sumber
Saya harus menggunakan editor Vi untuk membuatnya?
Alexander Kim
belum tentu - itu tidak spesifik vi. Anda dapat melakukan hal yang sama di bash.
suspectus
Yah saya mengedit file script.sh saya menggunakan PhpStorm. Bagaimana saya bisa melakukannya di sana? :)
Alexander Kim
Tidak tahu tentang phpStorm - Anda harus menanamkan karakter CTRL + J.
suspectus
Tidak bekerja Mungkin itu harus bekerja di linux? Saya di windows 8.1
Alexander Kim
0

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.

garyjohn
sumber