Menu

Somme de variables [Résolu/Fermé]

Messages postés
5
Date d'inscription
jeudi 29 mars 2001
Statut
Membre
Dernière intervention
4 mars 2018
- - Dernière réponse : dubcek
Messages postés
17705
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
25 mai 2019
- 5 mars 2018 à 10:58
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!


Afficher la suite 

5 réponses

0
Merci
salut,

à vue de pif, et vue les complications qu'annoncent les indirections, ton script est mal conçu.
Messages postés
36532
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
26 mai 2019
3557
0
Merci
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 ?

Messages postés
5
Date d'inscription
jeudi 29 mars 2001
Statut
Membre
Dernière intervention
4 mars 2018
0
Merci
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!
zipe31
Messages postés
36532
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
26 mai 2019
3557 -
# 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
Utilisateur anonyme > zipe31
Messages postés
36532
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
26 mai 2019
-
$ a1=1;a3=3;a5=5
$ ar=( ${a0} ${a1} ${a2} ${a3} ${a4} ${a5} )
$ ( IFS='+'; echo $((${ar[*]})) )
9
;)
lepays
Messages postés
5
Date d'inscription
jeudi 29 mars 2001
Statut
Membre
Dernière intervention
4 mars 2018
> 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
zipe31
Messages postés
36532
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
26 mai 2019
3557 > Utilisateur anonyme -
Hi,

Je me doutais qu'il y avait plus simple, et je voulais aussi voir si tu suivais ;-))
Messages postés
17705
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
25 mai 2019
4321
0
Merci
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
...
dubcek
Messages postés
17705
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
25 mai 2019
4321 -
plus simple
for var in "${taille01}" "${taille02}" "${taille03}" "${taille04}" "${taille05}" ; do
...
Messages postés
5
Date d'inscription
jeudi 29 mars 2001
Statut
Membre
Dernière intervention
4 mars 2018
0
Merci
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.