6
votes

Shell Scripting Opérations arithmétiques

En général, j'utiliserai EXPR à l'intérieur des scripts Shell pour faire des opérations arithmétiques.

Y a-t-il une manière où nous pouvons proposer une opération arithmétique dans un script shell sans utiliser expr?


3 commentaires

Je suppose "utiliser bc à la place" n'est pas assez la réponse que vous recherchez ...


@ignacio ... Pourriez-vous opter un exemple de comment utiliser BC?


PI = $ (echo "4 * A (1)" | BC -L)


3 Réponses :


3
votes

Avez-vous essayé de lire "homme ksh" si vous utilisez ksh?

"Man Bash", par exemple, a suffisamment d'informations sur faire des arithmétiques avec Bash. P>

La composition de commande - Je peux être utilisé pour spécifier qu'une variable doit être traitée comme un entier, par exemple Typeet -I Myvar Spécifie que la variable mouvar est un entier plutôt qu'une chaîne. Après la commande Typeet, tente d'attribuer une valeur non entière à la variable échouera: P>

   $ echo $(($MYVAR+45))
   101
   $


2 commentaires

OSR507DOC.SCO.com/fr/OSUSERG/_MATH_ON_VAR_IN_KSH.HTML bo.infn.it/alice/alice-doc/mll -doc / impgde / nœud18.html


Dans toute l'équité, la page KSH Man est, Um, pas si utile. Les pages de l'homme KSH88 sont même trompeuses, par exemple, expliquant la variable _, ils vous disent que cela se rapporte au courrier postal, mais n'expliquez pas clairement ce que c'est. (sur Solaris 9, HPUX 11.0 & 11i) C'est l'argument (s) de la commande précédemment entrée, si cela compte.



5
votes

Coquillages modernes (Posix Conformed = Moderne à mon avis) Supporte les opérations arithmétiques: + - / * sur les variables entier longues signées +/- 2147483647.

Utilisez AWK pour la double précision, 15 chiffres siginificants, il fait aussi SQRT. P>

Utilisez BC -L pour une précision étendue jusqu'à 20 chiffres significatifs. P>

La syntaxe (ZED_0XFFF) pour la coquille que vous avez déjà vue: p> xxx pré>

awk fait double précision - point flottant - opérations arithmétiques de manière nativement. Il a aussi SQRT, COS, SIN .... Voir: P>

http://people.cs.uu.nl/piet/docs/nawk/nawk_toc.html P>

BC a certaines fonctions définies et une présision étendue disponible avec le - L Option: P>

BC -L P>

Exemple: P>

echo 'sqrt(.977)' | bc -l


0 commentaires

0
votes

La précision et la plage de coque intégrée $ (()) dépend de la plate-forme. Sur une plate-forme 32 bits, il est limité aux entiers 32 bits (contrairement au Expr , qui semble supporter des entiers plus importants d'une manière qui semble être indépendante de la plate-forme).

(n.b - méfiez-vous que, tandis que ^ est un opérateur valide dans la plupart des coquilles, cela ne signifie pas "à la puissance de", mais plutôt xor.)

Aussi - certaines obus sont plus à venir à cet égard. ZSH, par exemple, permet aux opérations de point flottant, telles que $ ((10 / 3.0))


0 commentaires