bc: usando “scale” com a variável bash [closed]

3

É fácil escrever um script que precisa de alguns valores com 2 dígitos após o ponto flutuante. Tentando usar bc Não entendi como usar "escala", por exemplo

A=12 ; bc <<< $(($A/5))

está correto, mas a adição de "escala" leva a um erro:

A=12 ; bc <<< 'scale=2;$(($A/5))'

(standard_in) 1: illegal character: $
(standard_in) 1: illegal character: $
    
por watchmansky 15.11.2014 / 23:50

2 respostas

5

Substitua aspas simples por duplas; porque com aspas simples, $A na sua equação não é expandida, e sim considerada literalmente $A não 12

A=12 ; bc <<< "scale=2;$(($A/5))"
2

Além disso, dentro de $ (()) para variável não precisa ser especificado como $A , apenas A fará, por exemplo

A=12 ; bc <<< "scale=2;$((A/5))"
2

Em seguida, ao fazer $ (()), você invoca o subshell, que não é o que você deseja fazer porque bc não faz nada. Tente isto

A=12 ; bc <<< "scale=2; $A/5"
2.40
    
por 16.11.2014 / 00:04
1

Experimente:

A=12;echo 'scale=2;'"$A / 5"|bc -l
    
por 16.11.2014 / 00:10