[Bash] arithmétique de base : incrementer un variable :-(

arithmétique de base : incrementer un variable :-( [Bash] - Shell/Batch - Programmation

Marsh Posté le 13-03-2003 à 11:20:54    

Voila, comment kon fait pour incrementer une variable dans une boucle ?
 
J'ai bien sur essayer
var=0
var=$var+1
 
et bien sur ca me donne : 0+1 !
 
dans le Reference manual, il parle de $(( )) pour evaluer une expression, j'ai donc essayer var=$(($var+1)), mais il en veut pas !
 
Voila, c'est un peu tout bete, mais bon ... [:spamafote]


---------------
get amaroK plugin
Reply

Marsh Posté le 13-03-2003 à 11:20:54   

Reply

Marsh Posté le 13-03-2003 à 12:08:36    

eval() ?


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 13-03-2003 à 12:32:17    

bobuse a écrit :

Voila, comment kon fait pour incrementer une variable dans une boucle ?
 
J'ai bien sur essayer
var=0
var=$var+1
 
et bien sur ca me donne : 0+1 !
 
dans le Reference manual, il parle de $(( )) pour evaluer une expression, j'ai donc essayer var=$(($var+1)), mais il en veut pas !
 
Voila, c'est un peu tout bete, mais bon ... [:spamafote]  



machine2test(TESTOZOR):/tmp> I=1
machine2test(TESTOZOR):/tmp> I=`expr $I + 1`  
machine2test(TESTOZOR):/tmp> echo $I
2
machine2test(TESTOZOR):/tmp>  


 
tout simplement avec expr, voir son man page pour voir les options d'expr
 
@+


---------------
I love vi editor. it's the best one.
Reply

Marsh Posté le 13-03-2003 à 12:37:13    

ne fais pas les evals dans un $(()) c'est trop peu compatible entre les differents shells unix (ou linux).
 
en plus expr est une commande crée pour manipuler les changement de status tu peux meme y multiplier ou diviser une variable..
 
 
 
var=$var+1 evectivement c'est pour ajouter +1 à la fin de la chaine de caractere.
 
blablalbla > I.log.`date "+%y%m%d"`
 
cree le fichier non pas I.log.`date "+%y%m%d"` mais I.log.030313


---------------
I love vi editor. it's the best one.
Reply

Marsh Posté le 13-03-2003 à 12:52:40    

vimaster a écrit :



machine2test(TESTOZOR):/tmp> I=1
machine2test(TESTOZOR):/tmp> I=`expr $I + 1`  
machine2test(TESTOZOR):/tmp> echo $I
2
machine2test(TESTOZOR):/tmp>  


 
tout simplement avec expr, voir son man page pour voir les options d'expr
 
@+


thx  [:xp1700]


---------------
get amaroK plugin
Reply

Marsh Posté le 13-03-2003 à 12:56:03    

suaf que expr ca appelle un fork à chaque fois et c'est chiant à ecrire
 
essaye
i=$(($i + 1))

Reply

Marsh Posté le 13-03-2003 à 13:00:05    

++Taz a écrit :

suaf que expr ca appelle un fork à chaque fois et c'est chiant à ecrire
 
essaye
i=$(($i + 1))


Citation :

j'ai donc essayer var=$(($var+1)), mais il en veut pas !


 
Perdu [:ddr555]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 13-03-2003 à 13:08:48    

++Taz a écrit :

suaf que expr ca appelle un fork à chaque fois et c'est chiant à ecrire
 
essaye
i=$(($i + 1))


Le fork, perso je m'en fout, c'est juste pour un petit script de merde qui lit des donnees dans des fichiers, et trace des courbes ... Je trouve pas ca chiant a ecrire ... c'est du bash quoi !


---------------
get amaroK plugin
Reply

Marsh Posté le 14-03-2003 à 15:12:44    

:crazy:
 
 
$((i+1)) ou $((++i))


Message édité par minusplus le 14-03-2003 à 15:13:50
Reply

Marsh Posté le 14-03-2003 à 15:34:17    

minusplus a écrit :

:crazy:
 
 
$((i+1)) ou $((++i))

Code :
  1. #!/bin/sh
  2. i=5
  3. i=$((i+5))
  4. echo $i

 
 
 

Citation :

test.sh: erreur de syntaxe ligne 5: `i=$' inattendue

 
de toutes facons, c'est bon, ca marche avec expr


---------------
get amaroK plugin
Reply

Marsh Posté le 14-03-2003 à 15:34:17   

Reply

Marsh Posté le 14-03-2003 à 15:38:03    

bobuse a écrit :

Code :
  1. #!/bin/sh
  2. i=5
  3. i=$((i+5))
  4. echo $i

 
 
 

Citation :

test.sh: erreur de syntaxe ligne 5: `i=$' inattendue

 
de toutes facons, c'est bon, ca marche avec expr


 
restons souple...
 
 


[pts/4][15:43]manu@bassed6:~> i=0
[pts/4][15:43]manu@bassed6:~> ((i=i+1))
[pts/4][15:43]manu@bassed6:~> echo $i
1
[pts/4][15:43]manu@bassed6:~> ((i++))
[pts/4][15:44]manu@bassed6:~> echo $i
2
 
 



Message édité par minusplus le 14-03-2003 à 15:38:18
Reply

Marsh Posté le 14-03-2003 à 18:25:20    

sinon regardez seq
 
for i in $(seq 10)


Message édité par Taz le 14-03-2003 à 18:25:27
Reply

Marsh Posté le 19-03-2003 à 13:29:10    

$((.....)) n'est pas compatible à tous les shells utiliser expr si  
.


---------------
I love vi editor. it's the best one.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed