[shell] mod, div ?!!

Résolu
sassoura Messages postés 21 Date d'inscription   Statut Membre Dernière intervention   -  
 Utilisateur anonyme -
Bonjour,

Comment écrire en shell l'équivalent des opérateurs division euclidienne (/ en langage C) et module (% en langage C) en bash ?

Merci bien :)

A voir également:

1 réponse

Utilisateur anonyme
 
Salut,

Je comprends que tu veux effectuer des opérations arithmétiques avec l'interpréteur de commandes (lequel? sh? bash? ...)

Le modulo et la division sont exprimé de la même manière qu'en C.

echo $((2%3))  
2  
echo $((2%2))  
0


rtfm.
2
mamiemando Messages postés 33774 Date d'inscription   Statut Modérateur Dernière intervention   7 883
 
En fait il l'a posté dans la rubrique shell donc je viens de comprendre sa question (enfin je crois) : comment écrit-on en shell une division euclidienne et un modulo.

Donc là tu as donné la réponse en bash...

En shell :

(mando@silk) (~) $ expr 16 / 3
5
(mando@silk) (~) $ expr 16 % 3
1


Pour le stocker dans une variable shell :

x=$(expr 16 / 3)
echo $x


Bonne chance
1
sassoura Messages postés 21 Date d'inscription   Statut Membre Dernière intervention  
 
c'est l'interpréteur bash....ok merci :)
0
mamiemando Messages postés 33774 Date d'inscription   Statut Modérateur Dernière intervention   7 883
 
Donc problème résolu !

Pense comme le dit qqchquicommenceparQ à prendre le temps de faire une recherche google, pour des questions aussi simples, normalement tu es capable de trouver par toi-même ;-)

Et surtout essaye de poser ta question plus clairement la prochaine fois ! Du coup j'ai réécrit ton message initial pour que les personnes qui tombent sur ce fil de discussion comprennent mieux ta question.

Bonne soirée ;-)
0
Utilisateur anonyme
 
salut mamiemando,

expr n'est pas une commande bash.

les shell, qui respectent la norme POSIX, savent évaluer des expressions arithmétiques sur des nombres entiers sans avoir à recourir à des programmes externes, comme je l'ai montré, entre $(( )).
0
mamiemando Messages postés 33774 Date d'inscription   Statut Modérateur Dernière intervention   7 883
 
Il me semblait que l'opérateur $(( )) était spécifique à bash, mais je peux me tromper. J'avoue que je ne fais pas souvent du shell...

En même temps expr fait partie de coreutils donc qui est juste un paquet "nécessaire" sous debian, donc bon... programme externe c'est un grand mot, je pense que tu dois l'avoir partout :-) Ceci dit si la syntaxe $((...)) marche quelque soit le shell, c'est plus concis, plus lisible et plus propre...
0