Как сделать возведение в степень в bash - PullRequest
10 голосов
/ 08 октября 2010

я пытаюсь

echo 10**2 

печатает 10**2. Как заставить это работать?

Ответы [ 3 ]

21 голосов
/ 08 октября 2010

Вы можете сделать:

let var=10**2   # sets var to 100.

или даже лучше и рекомендовать способ:

var=$((10**2))  # sets var to 100.

Если вы просто хотите напечатать результат выражения, вы можете сделать:

echo $((10**2)) # prints 100.

Для больших чисел вы можете использовать оператор возведения в степень bc как:

bash:$ echo 2^100 | bc
1267650600228229401496703205376

Если вы хотите сохранить приведенный выше результат в переменной, вы можете снова использовать синтаксис $(())как:

 var=$((echo 2^100 | bc))  
4 голосов
/ 08 октября 2010

различными способами

Bash

x=2
echo $((x**2))

Awk

awk 'BEGIN{print 2**2}'

bc

echo "2 ^ 2" |bc

dc

dc -e '2 2 ^ p'
0 голосов
/ 15 января 2014

На самом деле var=$((echo 2^100 | bc)) не работает - Bash пытается сделать математику внутри (()). Но вместо этого есть последовательность командной строки, поэтому она создает ошибку

var=$(echo 2^100 | bc) работает, поскольку значение является результатом выполнения командной строки внутри ()

...