десятичное значение не печатает в bash? - PullRequest
0 голосов
/ 04 мая 2018

Я хочу оценить выражение и отобразить вывод правильно с 3 десятичными разрядами, которые я пробовал с приведенным ниже кодом, но он не работает, помогите мне, как это сделать в bash.

echo -e "Enter expression to calculate : \c"
read num
let a=num
printf '%f\n' "$a"

Input :  5+50*3/20 + (19*2)/7

Output :  17.000000

Desired Output : 17.929

Ответы [ 3 ]

0 голосов
/ 04 мая 2018

С bc:

echo 'scale=3; 5+50*3/20 + (19*2)/7' | bc -l

Выход:

17.928
0 голосов
/ 04 мая 2018

Это один из очень редких случаев, когда допустимо расширение переменной оболочки, чтобы она стала частью тела сценария awk:

$ num='5+50*3/20 + (19*2)/7'

$ awk 'BEGIN{print '"$num"'}'
17.9286

$ awk 'BEGIN{printf "%0.3f\n", '"$num"'}'
17.929
0 голосов
/ 04 мая 2018

Вместо let a=num вы можете, например:

echo $num | bc 
17.92857142857142857142
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...