web-dev-qa-db-fra.com

Shell scripting: relancer au pouvoir

Comment élevez-vous m au pouvoir de n? J'ai cherché cela partout. Ce que j’ai trouvé, c’est que l’écriture m ** n devrait marcher, mais pas. J'utilise #!/Bin/sh

21
Linas

Je voudrais essayer la calculatrice bc. Voir http://www.basicallytech.com/blog/index.php?/archives/23-command-line-calculations-using-bc.html pour plus de détails et d'exemples. 

par exemple. 

$ echo '6^6' | bc

Donne 6 au pouvoir 6. 

20
Brian Agnew

Utiliser $ n ** $ m fonctionne vraiment bien… .. Peut-être n'utilisez-vous pas la syntaxe correcte pour évaluer une expression mathématique… .. Voici comment j'obtiens le résultat sur Bash:

echo $(($n**$m))

ou

echo $[$n**$m]

Les crochets ici ne sont pas censés ressembler à l’évaluateur de test dans la déclaration if, vous pouvez donc les utiliser également sans espaces. Personnellement, je préfère l'ancienne syntaxe avec des parenthèses.

20
Gianni

utiliser bc est une solution élégante. Si vous voulez faire cela en bash:

$ n=7
$ m=5

$ for ((i=1, pow=n; i<m; i++)); do ((pow *= n)); done
$ echo $pow
16807

$ echo "$n^$m" | bc  # just to verify the answer
16807
6
glenn jackman

Vous pourriez utiliser dc. Ce

dc -e "2 3 ^ p"

les rendements

8
3
unutbu

Mon administrateur système n'a pas installé dc, donc en ajoutant à d'autres réponses correctes, je parie que vous n'avez pas pensé à cela -

a=2
b=3
python -c "print ($a**$b)"
>> 8

fonctionne dans bash/Shell.

0
markroxor