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 17/08/2019, à 16:24

emena

Question de programmation

Bonjour,

J'ai deux disques de backup et j'aimerais que chaque mois mon cron backup automatiquement sut l'un puis sur l'autre.
j'ai fais une table à deux entrés et je veux faire un modulo pour choisi l'entrée

DisqueCourant=(date +'%02m')%2

Qu'est ce qui cloche ? Pourquoi il ne fait pas le modulo ?
j'ai essayé plusieurs syntaxes, mais je ne trouve pas la solution, grand merci d'avance à celui qui pourra me sortir de ce bourbier.
EM


Ubuntu 22.04.4 LTS

Hors ligne

#2 Le 17/08/2019, à 16:57

MicP

Re : Question de programmation

Bonjour

Pour calculer et afficher le résultat de l'opération 5 modulo 2 avec bash,
il faudrait faire :

echo $(( 5 % 2 ))

Pour faire afficher le nombre correspondant au mois en cours
mais sans le faire précéder par un 0 s'il n'est que sur un chiffre,
il faut entrer :

echo $(date +%-m)

Donc, pour assigner à la variable DisqueCourant
la valeur 0 ou un 1 en fonction du mois courant,
il te faudra faire :

DisqueCourant=$(( $(date +%-m) % 2 ))

Dernière modification par MicP (Le 17/08/2019, à 17:22)

Hors ligne

#3 Le 17/08/2019, à 17:15

emena

Re : Question de programmation

Grand Merci, ça marche.
Il faudra vraiment que je me replonge dans les variables et les opérateurs de bash. roll
Bonne journée
EM

Dernière modification par emena (Le 17/08/2019, à 17:17)


Ubuntu 22.04.4 LTS

Hors ligne

#4 Le 17/08/2019, à 22:08

Watael

Re : Question de programmation

date n''est plus indispensbable :

printf -v month '%(%-m)T'
echo $((month % 2))

et hop! une commande externe de plus en moins. smile

Dernière modification par Watael (Le 17/08/2019, à 22:08)


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

En ligne

#5 Le 18/08/2019, à 03:44

MicP

Re : Question de programmation

Miam miam miam, tongue j'aime beaucoup ce printf du bash

Ce qui donnerait alors :

DisqueCourant=$(($(printf '%(%-m)T')%2))

=======
Pour voir la page man du bash concernée
voir le retour de la commande :

man --pager='less -p "printf"' bash

Dernière modification par MicP (Le 18/08/2019, à 03:45)

Hors ligne

#6 Le 18/08/2019, à 08:34

FrancisFDZ

Re : Question de programmation

Bonjour,
[Minute nostalgie]
Ça me rappelle les défis du défunt Hebdogiciel qui consistait à trouver une commande qui fasse un maximum de choses en une seule ligne
[/Minute nostalgie]


-- On peut avoir des raisons de se plaindre et n'avoir pas raison de se plaindre --
[Victor Hugo]

Hors ligne