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 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 hmm

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

zackalucard a écrit :
`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