Вы действительно хотите создать альтернативную установку OpenSSL 1.0.0c и не заменить системные библиотеки. Вы рискуете повреждать значительные части своей системы CentOS путем замены 0.9.8k библиотеки. Лучше всего просто скомпилировать его и установить его в/usr/local/openssl или чем-то подобном.
У меня есть удобная вызванная функция удара calc
:
calc () {
bc -l <<< "$@"
}
Использование в качестве примера:
$ calc 65320/670
97.49253731343283582089
$ calc 65320*670
43764400
Можно изменить это для удовлетворения себе. Например:
divide() {
bc -l <<< "$1/$2"
}
Примечание: <<<
здесь строка, которая питается в stdin bc
. Вы не должны вызывать echo
.
Bash может сделать саму математику в некоторой степени. Это не полезно для точности, тем не менее, поскольку это округляется.
[user]$ echo $(( 10/5 ))
2
Но Вы точно правы - функция удара была бы простым ярлыком, и Ваш пример в основном работает.
divide() {
echo "scale=25;$1/$2" | bc
}
Бросок, что в Вашем .bashrc и затем Вы можете:
[user]$ divide 10 5
2.0000000000000000000000000
echo $((6383/7671))
даст Вам нуль. Необходимо быть явными о числах с плавающей точкой: echo $((6383.0/7671.0))
– Sridhar Sarnobat
29.01.2016, 21:39
Вы, вероятно, знаете удар встроенный 'expr' как в
$ expr 60 / 5
12
который ограничен целыми числами и нуждается в пробелах между аргументами.
Что мешает Вам определять функцию вроде выражения эха, которое Вы уже используете? Т.е.
divide () {
echo $1/$2 | bc
}
Едва ли ответ на этот точный вопрос, но могло бы быть хорошо знать. Использовать zsh
;-)
% echo $((65320./670))
97.492537313432834
expr
встроенный, так хороший ответ невнимательный :)
– Steen Schütt
16.08.2017, 20:12
Если Вы имеете calc
установленный в Вашей системе и Вам не нравится округляться, Вы можете:
div() { calc "$1 / $2"; }
apcalc
(Точность Arbitary)... Двоичный файл называют calc
– Peter.O
31.01.2012, 19:37
calc
.
–
31.01.2012, 20:06
Вместо того, чтобы использовать до н.э, Вы могли использовать awk:
div() { awk -v p=$1 -v q=$2 'BEGIN{print p/q}'; }
Грязный взлом для маленьких значений и ограниченной точности, не используя до н.э был бы, чтобы умножить предлагающее кандидата лицо перед подразделением, получить точный результат.
Пример без точности:
echo $((13/7))
1
и с 2 точностью цифр: умножьтесь на 100 и переместите десятичную точку 2 шага налево:
echo $((100*13/7)) | sed 's/..$/.&/'
1.85
echo $((100*13/7))%
185%
Это только полезно, если диапазон чисел известен прежде, и точность всегда является тем же. Предотвращение звонить до н.э и вызов sed кажутся не очень разумными.
Отметьте, то умножение значений могло бы вести для переполнения ошибок, но не очень рано:
echo $((1000000000*12345678901))
-6101065172709551616
$[expression]
вместо этого
– laebshade
07.02.2012, 01:06
The old format $[expression] is deprecated and will be removed in upcoming versions of bash.
– user unknown
07.02.2012, 23:29
echo Division
efgh=$num1/$num2
remainder=$num1%num2
echo $num1 "/" $num2 "=" $efgh.$remainder
echo
ksh
, с 93 вариантами, здесь-строки поддержек. – Kusalananda♦ 19.04.2017, 19:05