Bonjour,
je cherche a exécuter un rsync différent selon que nous soyons le 1er ou le 15 du mois.
pour le moment j'arrive à bien récupérer la date du jour :
datedujour=$(date '+%d')
echo -e "$datedujour\n"
résultat :
30
mais quand je rajoute ceci :
datedujour=$(date '+%d')
echo -e "$datedujour\n"
if ($datedujour == "30"); then
echo -e "$datedujour"
else
echo -e "pas la date voulue"
fi
résultat :
30
exempleSH.sh: line 14: 30: not found
pas la date voulue
Merci de votre aide…
# Crochets
Posté par Pnchbllz . Évalué à 3.
Salut,
pour ton if essaye la syntaxe suivante:
if [ $datedujour == "30" ]
cordialement
# Raté
Posté par Sacha Trémoureux (site web personnel) . Évalué à 2.
Hello,
Ce sont des crochets autour des conditions. ;)
En bash, le contenu entre parenthèses est exécuté.
# pas mieux
Posté par acuponctus . Évalué à 1.
Merci à vous 2
cependant ca ne fonctionne pas mieux, j'ai le même message.
je penche pour un élément stocké sous forme de date et non sous forme de nombre, est ce que ca pourrait être ca ?
Dans ce cas comment convertir
datedujour=$(date '+%d') en nombre ?
merci
[^] # Re: pas mieux
Posté par matthieu bollot (site web personnel, Mastodon) . Évalué à 2.
non, c'est bien juste une histoire de crochet, chezmoiçamarche©
if [ "$datedujour" = "30" ]; then
echo -e "$datedujour"
else
echo -e "pas la date voulue"
fi
30
[^] # Re: pas mieux
Posté par moulator . Évalué à 1.
Crochets et espaces à l'intérieur des crochets…
if [ xxxxxx ]
# ...
Posté par plabuse . Évalué à 2.
[^] # Re: ...
Posté par matthieu bollot (site web personnel, Mastodon) . Évalué à 2.
J'ai plus le droit de modifier mon commentaire alors je complète ici :
$xx = "30" compare des string
$xx -eq "30" compare des nombres
et pour plus d'info il y a "man test" la fonction derrière les crochets.
[^] # Re: ...
Posté par Marotte ⛧ . Évalué à 2.
Juste pour préciser, = et == sont équivalents (comparent des chaînes). Ce n’est pas dit dans le man mais dans la page info.
[^] # Ne pas utiliser ==
Posté par Cyril Brulebois (site web personnel) . Évalué à 8.
Ne pas utiliser
==
, ce n'est pas dans POSIX, et ça peut ne pas être supporté.Sous bash :
Sous dash :
Sous zsh :
Debian Consultant @ DEBAMAX
[^] # Re: Ne pas utiliser ==
Posté par Marotte ⛧ . Évalué à 1.
Testé et confirmé. Merci pour la mise au point…
# résolu
Posté par acuponctus . Évalué à 1.
MERCI !!
pour info c'est cette version qui a fonctionné
if [ $datedujour -eq 30 ]
encore merci
[^] # Re: résolu
Posté par Marotte ⛧ . Évalué à 2.
C’est bien -eq qu’il faut utiliser dans ton cas…
2 -eq 02 est vrai
alors que :
2 = 02 est faux
[^] # Re: résolu
Posté par totof2000 . Évalué à 2.
Je te conseille de mettre $datedujour entre quote durant ton test. Tu éviteras les erreurs dans le cas ou $datedujour sserait vide pour une raison ou une autre (à moins que ce soit le but recherché …).
[^] # Re: résolu
Posté par totof2000 . Évalué à 2.
Je suis allé un peu vite : pas de quote pour -eq: c'est untest numérique.
Désolé pour le bruit.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.