BASH: как вычислить десятичные дроби с помощью команды echo?

с помощью команды echo для вычисления десятичных знаков, как показано ниже:

$echo $((1+1+2.1))

выдаст эту ошибку ниже

bash: 1+1+2.1: syntax error: invalid arithmetic operator (error token is ".1")

Итак, что я должен сделать, чтобы получить результат 4.1?


person CuriousNewbie    schedule 13.06.2020    source источник
comment
$(( ... )) — это не функция echo, это функция оболочки. Он работает одинаково для каждой команды, а не только echo, и завершается до запуска echo или любой другой команды. Тем не менее, эта функция оболочки не поддерживает операции с плавающей запятой (или нецелочисленные) вообще. В дополнение к связанному дубликату см. BashFAQ #22.   -  person Charles Duffy    schedule 13.06.2020
comment
эхо ((1+1)+(2.1))   -  person Nabeel Khan    schedule 13.06.2020
comment
@NabeelKhan, простите? Это не делает математику в любой POSIX-совместимой оболочке. Вы можете увидеть, что он делает в bash, на странице ideone.com/QeZtQh.   -  person Charles Duffy    schedule 13.06.2020
comment
@CharlesDuffy, извини, я этого не знал.   -  person CuriousNewbie    schedule 13.06.2020
comment
@AhiungLim извините, используйте это: echo (1+1)+(2.1) | до н.э. -l   -  person Nabeel Khan    schedule 13.06.2020
comment
@NabeelKhan спасибо, Набил, ваш код полезен, но его можно упростить, используя echo 1+1+2.1 | bc , я пытался понять, что такое опция -l, но из того, что я вижу, так это то, что -l добавляет больше десятичных знаков к результату, который имеет много десятичных знаков.   -  person CuriousNewbie    schedule 13.06.2020