Je dois vérifier l'heure actuelle et abandonner le script si ce n'est pas le bon moment de la journée, je suis censé l'exécuter. De plus, si quelqu'un d'autre l'exécute, il devrait abandonner.
Par exemple: J'ai besoin que mon script ne s'exécute que s'il est démarré entre 22 h 00 et 2 h 00 (une fenêtre de 4 heures).
Actuellement, je fais ce qui suit. Prendre le temps date +%k%M
et comparer avec des nombres codés en dur
#!/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
Je voudrais savoir s'il existe une autre méthode efficace en ce qui concerne la comparaison du temps dans sh
ou 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
, votre script n'est pas très sûr. L'utilisation de fichiers de verrouillage est probablement une meilleure option.Réponses:
Cela me semble parfait. Qu'est-ce qui vous fait penser qu'il devrait être amélioré?
Quoi qu'il en soit, les moyens de l'améliorer pourraient être:
zsh
ouksh93
gawk
(qui est plus petit que bash, mais pas que dash mais pourrait éviter le fork supplémentaire):Exemple:
la source
Si les outils externes sont autorisés, vous voudrez peut-être vérifier
dateutils
.Votre "script" devient:
Avertissement: je suis l'auteur dudit outil.
la source