Bash: оценить математический термин?

echo 3+3

Как я могу оценить такие выражения в Bash, в этом случае к 6?

38
задан ᆼᆺᆼ 13 September 2015 в 13:12
поделиться

7 ответов

в оболочках, таких как zsh / ksh, вы можете использовать числа с плавающей запятой для математических вычислений. Если вам нужно больше математических возможностей, используйте такие инструменты, как bc / awk / dc

, например,

var=$(echo "scale=2;3.4+43.1" | bc)
var=$(awk 'BEGIN{print 3.4*43.1}')

, чтобы посмотреть, что вы пытаетесь сделать

awk '{printf "%.2f\n",$0/59.5}' ball_dropping_times >bull_velocities
16
ответ дан 27 November 2019 в 03:01
поделиться

expr - стандартный способ, но он обрабатывает только целые числа.

bash имеет несколько расширений, которые также обрабатывают только целые числа:

$((3+3))  returns 6
((3+3))   used in conditionals, returns 0 for true (non-zero) and 1 for false
let 3+3   same as (( ))

let и (()) могут использоваться для присвоения значений, например

let a=3+3
((a=3+3))

для чисел с плавающей запятой вы можете использовать bc

echo 3 + 3 | bc

29
ответ дан 27 November 2019 в 03:01
поделиться

Решено благодаря Деннису, пример использования BC:

$ cat calc_velo.sh

#!/bin/bash

for i in `cat ball_dropping_times`
do
echo "scale=20; $i / 59.5" | bc 
done > ball_velocities
1
ответ дан 27 November 2019 в 03:01
поделиться
echo $(( 3+3 ))
86
ответ дан 27 November 2019 в 03:01
поделиться

Вы можете использовать команду expr как:

expr 3 + 3

Чтобы сохранить результат в переменной, вы можете сделать:

sum=$(expr 3 + 3)

или

sum=`expr 3 + 3`
6
ответ дан 27 November 2019 в 03:01
поделиться

Множество способов - наиболее переносимым является использование команды expr :

expr 3 + 3
3
ответ дан 27 November 2019 в 03:01
поделиться

Я считаю, что метод ((3 + 3)) является наиболее быстрым, поскольку он интерпретируется оболочкой, а не внешним двоичным файлом. время большой петли с использованием всех предложенных методов для наиболее эффективного.

2
ответ дан 27 November 2019 в 03:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: