Tôi cần một loạt các lệnh hoặc một lệnh duy nhất ngủ cho đến khi xảy ra lần tiếp theo của một thời điểm cụ thể như "4:00".
Làm thế nào tôi có thể làm điều đó?
Các at
lệnh hoặc một cronjob không phải là một lựa chọn vì tôi không phải rời khỏi kịch bản Tôi hiện tại là.
Trường hợp cụ thể mà tôi đang nói đến là một kịch bản chạy trên màn hình. Điều rất quan trọng là tôi không dừng việc thực thi tập lệnh bằng chính tập lệnh bởi vì có một số biến quan trọng cần thiết tại một số điểm của tập lệnh. Kịch bản không phải luôn luôn được thực hiện trong một vấn đề thông thường. Nó chỉ cần được thực hiện tại một thời điểm cụ thể.
Sẽ rất có lợi nếu tập lệnh sẽ phải tạo bất kỳ tệp hoặc bất kỳ tác vụ nào khác như cronjobs hoặc các màn hình khác. Đây chỉ đơn giản là một câu hỏi về thiết kế.
Tôi chỉ có một ý tưởng tuyệt vời:
difference=$(($(date -d "4:00" +%s) - $(date +%s)))
if [ $difference -lt 0 ]
then
sleep $((86400 + difference))
else
sleep $difference
fi
Bạn có ý tưởng nào tốt hơn không?
Thông tin thêm sẽ được thêm vào nếu được yêu cầu!
date -d
với date -j
và thay thế 4:00
với 0400
.