Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 01/03/2019, à 16:12

solivier

Attendre minutes pair à 0s et toutes les 15s

Bonjour,

Je suis actuellement entrain de chercher deux fonction pour attendre le début des minutes pair et une autre pour toute les 15s:

wait_0 () {
    while [[ ("$(( $(date +"%M") % 2))" -ne 0 ) || ("$(( $(date +"%S")))" -ne 0 ) ]]
    do
        sleep 1
    done
}


wait_0 () {
    while [[ ( $(( $(date +"%S") %15)) -ne 0 ) ]]
    do
        sleep 1
    done
}

Il s'avère que j'ai ces messages d'erreurs::

value too great for base (error token is "08")

ou

value too great for base (error token is "09")

Pouvez vous m'éclairer sur le problème et la manière de procéder?

Merci par avance.

Hors ligne

#2 Le 01/03/2019, à 17:51

pingouinux

Re : Attendre minutes pair à 0s et toutes les 15s

Bonjour,
Il faut choisir un format de date qui n'ajoute pas un 0 devant les nombres à un chiffre.

    while [[ ("$(( $(date +"%_M") % 2))" -ne 0 ) || ("$(( $(date +"%_S")))" -ne 0 ) ]]
while [[ ( $(( $(date +"%_S") %15)) -ne 0 ) ]]

Ajouté :
La raison en est qu'un nombre commençant par un 0 est considéré comme de l'octal.

Dernière modification par pingouinux (Le 01/03/2019, à 17:54)

Hors ligne

#3 Le 01/03/2019, à 19:15

Watael

Re : Attendre minutes pair à 0s et toutes les 15s

salut,

le sous-shell n'est pas requis :

[[ $(( $(date..)%2)) -ge 1 ||...

les double-crochets ne sont pas indispensables :

test $(( $(date ...)%2)) -ge 1 -o $((...)) -ge 1

en bash, le test est superflu :

(( $(date..) >= 1 || $(date..) >= 1 ))

directement.

enfin, dans le cas de figure présent, je préfère until.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne