Chà, tôi là một người mới sử dụng Linux và tôi đang gặp sự cố với một tập lệnh bash đơn giản.
Tôi có một chương trình thêm vào tệp nhật ký khi nó đang chạy. Theo thời gian, tệp nhật ký đó trở nên lớn. Tôi muốn tạo một tập lệnh khởi động sẽ đổi tên và di chuyển tệp nhật ký trước mỗi lần chạy, tạo hiệu quả các tệp nhật ký riêng biệt cho mỗi lần chạy chương trình. Đây là những gì tôi có cho đến nay:
DATE=$(date +"%Y%m%d%H%M")
mv server.log logs/$DATE.log
echo program
Khi chạy, tôi thấy điều này:
: command not found
program
Khi tôi cd vào thư mục nhật ký và chạy dir, tôi thấy điều này:
201111211437\r.log\r
Chuyện gì vậy? Tôi cho rằng có một số vấn đề về cú pháp mà tôi đang thiếu, nhưng dường như tôi không thể tìm ra.
CẬP NHẬT: Nhờ nhận xét của shellter bên dưới, tôi thấy vấn đề là do tôi đang chỉnh sửa tệp .sh trong Notepad ++ trong cửa sổ, sau đó gửi qua ftp đến máy chủ, nơi tôi chạy tệp qua ssh . Sau khi chạy dos2unix trên tệp, nó hoạt động.
Câu hỏi mới: Làm cách nào để tôi có thể lưu tệp chính xác ngay từ đầu, để tránh phải thực hiện sửa lỗi này mỗi khi tôi gửi lại tệp?
\r
được carriage_return, kiểm tra kịch bản bash của bạn, có thể được bao gồm bên trong kịch bản