Saya perlu memeriksa waktu saat ini dan membatalkan skrip jika itu bukan waktu yang tepat untuk menjalankannya. Juga, jika ada orang lain yang menjalankannya, itu harus dibatalkan.
Sebagai contoh: Saya perlu skrip saya untuk hanya berjalan jika dimulai antara 10 dan 2 pagi (jendela 4 jam).
Saat ini saya sedang melakukan hal berikut. Meluangkan waktu dengan date +%k%M
dan membandingkan dengan angka kode keras
#!/bin/sh
currTime=`date +%k%M`
check_time_to_run()
{
tempTime=$1
if [ $tempTime -gt 200 -a $tempTime -lt 2200 ]; then
echo "Time is between 2 AM and 10 PM. Aborting."
exit 1
else
echo "Time is after 10 PM and before 2 AM. Running normally."
fi
}
check_time_to_run $currentTime
Saya ingin tahu apakah ada metode lain yang efisien sehubungan dengan perbandingan waktu dalam sh
atau bash
?
date +%s
.currTime=$(date +%s); lower=$(date +%s --date="2:00"); upper=$(date +%s --date="22:00"); if [$currTime -gt $lower -a $currTime -lt $upper]; then
...faketime
, skrip Anda tidak terlalu aman. Menggunakan file kunci mungkin merupakan opsi yang lebih baik.Jawaban:
Itu terlihat sempurna bagi saya. Apa yang membuat Anda berpikir itu harus diperbaiki?
Bagaimanapun, cara untuk memperbaikinya bisa:
zsh
atauksh93
gawk
(yang lebih kecil dari bash, tetapi tidak dari dash tetapi bisa menghindari garpu tambahan):Contoh:
sumber
Jika alat eksternal diizinkan, Anda mungkin ingin memeriksa
dateutils
."Skrip" Anda menjadi:
Penafian: Saya adalah penulis alat tersebut.
sumber