#1 Le 22/08/2014, à 12:07
- zackalucard
Shell : division d'une variable dans un IF
Bonjour tout le monde,
J'ai un petit problème au niveau des opérations simples en Shell. Le voici :
Je souhaite tout d'abord tester si les fichiers d'un de mes dossiers ont un nombre dans leur nom pair ou impair. Si le nombre est pair, je souhaite diviser ce nombre par 2, si la condition est impair, je ne fais rien.
Voici ma boucle, mais le souci vient de la condition du IF.
for i in `seq 0 200`;
if [ ($i/2)*2 = $i ]
then
do
nomFichier.$i.txt >> ./AutreDossier/nomFichier.$i/2.txt
done
fi
J'ai également essayé de réaliser une simple opération en dehors du IF, genre
x=2
z=$((i / x))
mais même ça il n'en veut pas
Quelqu'un aurait-il une petite idée ?
Hors ligne
#2 Le 22/08/2014, à 12:14
- pingouinux
Re : Shell : division d'une variable dans un IF
Bonjour,
Je n'ai pas bien compris ce que tu voulais faire, mais voici une piste :
$ i=5; ((i%2)) && echo impair || echo pair
impair
$ i=4; ((i%2)) && echo impair || echo pair
pair
Ajouté : C'est du bash et non du sh
Dernière modification par pingouinux (Le 22/08/2014, à 12:16)
Hors ligne
#3 Le 22/08/2014, à 12:39
- zackalucard
Re : Shell : division d'une variable dans un IF
Merci pinguinux, j'avais oublié la fonction modulo !
Alors je viens de faire un petit test sans la boucle IF et ça fonctionne
i=5
if [ `expr $i % 2` = $i ]
then
x=1
echo $x
else
x=2
echo $x
En revanche, lorsque j'ajoute le FOR, rien ne va plus... : "Erreur de syntaxe près du symbole inattendu « if »"
for i in `seq 0 200`;
if [ `expr $i % 2` = $i ]
then
x=1
echo $x
else
x=2
echo $x
Hors ligne
#4 Le 22/08/2014, à 12:57
- Watael
Re : Shell : division d'une variable dans un IF
salut,
`expr' est inutile avec un shell compatible POSIX.
for ...; do ...; done
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#5 Le 22/08/2014, à 13:58
- zackalucard
Re : Shell : division d'une variable dans un IF
Ok !!!
Je n'avais pas bien compris l'utilisation de FOR... Merci !
Pour expr, j'ai en fait
`expr $i%2 | bc`
Merci encore Watael.
Hors ligne
#6 Le 22/08/2014, à 15:28
- pingouinux
Re : Shell : division d'une variable dans un IF
`expr $i%2 | bc`
Ceci est équivalent
$((i%2))
et si tu veux absolument utiliser ta construction
`expr $i % 2`
Hors ligne
#7 Le 26/08/2014, à 11:49
- zackalucard
Re : Shell : division d'une variable dans un IF
Merci beaucoup pingouinux, effectivement ça marche bien !
Hors ligne