2017-06-22 2 views
1

Je suis nouveau à Unix. J'ai essayé d'ajouter des valeurs mentionnées ci-dessous:Comment ajouter des valeurs sous UNIX?

var='expr 2 + 2' 
echo "Total value: $var" 

je me attends à la sortie soit Total value: 4. Au lieu de cela, je reçois Total value: expr 2 + 2.

Quelqu'un pourrait-il m'aider à identifier mon erreur?

Répondre

3

approche simplifiée:

var=$((2 + 2)) 

Ou bc approche (calculatrice langue) pour effectuer des calculs mathématiques:

var=$(echo '2 + 2' | bc) 
echo "Total value: $var" 
Total value: 4 
+0

Ressemble surpuissant me - 'expr' est très bien. La chose importante est la substitution de commande, en utilisant '\' commande \ '' ou '$ (commande)' –

+1

@TobySpeight, 'var = $ ((2 + 2))' est encore mieux (portabilité). 'bc' est bon pour les calculs mathématiques étendus – RomanPerekhrest

+0

N'oubliez pas d'utiliser' bc -l' si vous utilisez des nombres décimaux (non entiers). –

1
var=$(expr "2" + "2") 
echo "Total value: $var" 
3

Vous devez connaître concept shell: lorsque vous écrivez var='expr 2 + 2', c'est une chaîne. Mais vous voulez avoir le résultat de cette commande. Pour cela, vous devez écrire $(expr 2 + 2) pour exécuter la commande et substituer sa sortie.

est ici un remplacement de travail:

var=$(expr 2 + 2) 
echo "Total value: $var" 

Bienvenue dans le monde Unix! ;)

-1

Une autre façon:

var=$((2 + 2)) 
echo "Total value: $var" 

(EDIT: ne pas appeler un bash)

+1

bashisme? Vraiment? –

+0

Les extensions arithmétiques ('$ ((...))') sont conformes à POSIX. – mklement0

+0

Merci, j'ai mis à jour la réponse en conséquence, ne l'appelant plus un bashisme. –