Somme de variables

Résolu
lepays Messages postés 8 Date d'inscription   Statut Membre Dernière intervention   -  
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
Dans cette boucle:
for var in $taille01 $taille02 $taille03 $taille04 $taille05 ; do
if [ -n ${!var} ] ; then
echo "$var is set to ${!var}"
else
echo "$var is not set"
fi

done

J'ai des variables qui peuvent être vides et à l'exécution, je voudrais exploiter celles qui ne sont pas éliminées et, comme elles représentent chacune une valeur je voudrais les ajouter. Avec ce bout de code trouvé je bute sur la façon d'y parvenir: une petite aide serait bienvenue et, merci par avance!


A voir également:

5 réponses

Utilisateur anonyme
 
salut,

à vue de pif, et vue les complications qu'annoncent les indirections, ton script est mal conçu.
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
Salut,

Peut-être devrais-tu plutôt t'intéresser aux tableaux en bash pour y stocker tes variables (les valeurs nulles ne seront pas prises en compte) et boucler avec une boucle style langage C ?

0
lepays Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
Hello!

Merci Zipe31 de m'avoir répondu - Je me suis déjà accroché aux tableaux. je vais y replonger - Ce bout de script est modifié juste avec mes variables - le script a été pioché sue le net.
Ses variables contiennent en fait la taille de fichiers sauvegardés et, ce que j'ai trouvé de bien c'est que je n'ai pas d'erreur si je ne rentre pas la totalité des variables de la boucle For (mais toutes ces variables existent mais ne sont pas toutes sélectionnées) : le comble est l'extraction de ces variables non vides sélectionnées par un menu (que je vois dans la réponse de la boucle ci-dessus). Je vais regarder chez les tableaux! Merci amplement et Salutations!
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430
 
# Définition des variables
$ a1=1;a3=3;a5=5

# Déclaration tableau (a0, a2 et a4 ne sont pas définies)
$ var=( ${a0} ${a1} ${a2} ${a3} ${a4} ${a5} )

# Nombre d'éléments du tableau
$ echo ${#var[@]}
3

# Boucle sur les valeurs présentes et addition
$ for (( x=0; x<${#var[@]}; x++ ));do som=$(( ${som} + ${var[x]} ));done;echo ${som}
9
0
Utilisateur anonyme > zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention  
 
$ a1=1;a3=3;a5=5
$ ar=( ${a0} ${a1} ${a2} ${a3} ${a4} ${a5} )
$ ( IFS='+'; echo $((${ar[*]})) )
9
;)
0
lepays Messages postés 8 Date d'inscription   Statut Membre Dernière intervention   > Utilisateur anonyme
 
Bonjour et Merci!
Je remercie amplement de m'avoir lu et suggérer une solution! Merci et Bonne fin de journée - il est 13h10 de dimanche 04 en Martinique! Bye
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 430 > Utilisateur anonyme
 
Hi,

Je me doutais qu'il y avait plus simple, et je voulais aussi voir si tu suivais ;-))
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
les tableaux c'est mieux, sinon, pour qu'une variable vide soit traitée dans la boucle
for var in ${taille01:-""} ${taille02:-""} ${taille03:-""} ${taille04:-""} ${taille05:-""} ; do
...
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
plus simple
for var in "${taille01}" "${taille02}" "${taille03}" "${taille04}" "${taille05}" ; do
...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lepays Messages postés 8 Date d'inscription   Statut Membre Dernière intervention  
 
Hello!

Merci Zipe31 et Dubcek. - En effet la solution de Zipe31 est très performant et je le félicite d'avoir trouvé très rapidement cette solution. Je dois dire que je suis très heureux et ce bout de code sera décortiqué minutieusement: que je puisse tirer des leçons! Pour ce code, il aura 27 variables et celles qui seront sélectionnées par menu seront avec "${som}" décortiquées par un script en Octets, Ko, Mo et Go. Merci encore et Très Sincères Salutations - Je vais mettre Résolu.
0