echo 3+3
Как я могу оценить такие выражения в Bash, в этом случае к 6?
в оболочках, таких как 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
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
Решено благодаря Деннису, пример использования 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
Вы можете использовать команду expr как:
expr 3 + 3
Чтобы сохранить результат в переменной, вы можете сделать:
sum=$(expr 3 + 3)
или
sum=`expr 3 + 3`
Множество способов - наиболее переносимым является использование команды expr :
expr 3 + 3
Я считаю, что метод ((3 + 3)) является наиболее быстрым, поскольку он интерпретируется оболочкой, а не внешним двоичным файлом. время большой петли с использованием всех предложенных методов для наиболее эффективного.