2009-11-19 1 views
0

Je travaille donc sur un code arithmétique simple. Voici ce que je suis:script linux code arithmétique simple

echo "The number should be 2"; 

declare -i input added 

input= date +%w 

let added="input/2" 

echo "$added" 

quand je le lance la sortie est

4 
0 

Je suis en train d'obtenir juste 2. Que diable suis-je tort?

Répondre

6

Le problème est de savoir comment vous créez la variable input. Il exécute simplement la commande, mais n'attribue pas le résultat à input. Au lieu de cela, faire:

input=$(date +%w) 

Cela affectera la sortie de la commande date-input.

3

autre façon:

#Just echo the result: 
expr $(date +%w)/2 

#store the result into a variable: 
input=$(expr $(date +%w)/2) 

echo $input 
2 
+0

pas besoin d'appeler externe expr. bash peut faire un peu d'arithmétique seul. – ghostdog74

0

Une chose à noter est que dans Bash, vous pouvez généralement pas des espaces autour du signe égal.

Une syntaxe alternative à l'utilisation let est d'utiliser $(()) ou (()):

var2=$((var1/2)) 

Ou

((var2 = var1/2)) 

A l'intérieur des doubles parenthèses, vous pouvez utiliser des espaces et vous pouvez omettre le signe de dollar de la début des noms de variables.