Como expressar expressões de ponto flutuante em scripts bash

1

Por que

a2=100.    
echo 1.1*$a2|bc   

trabalhe no terminal, mas as 3 variantes no script a seguir não:

a2=100.  
echo "  
1.1*$a2|bc  
$(1.1*$a2|bc)  
$((1.1*$a2|bc))  
">x.sh    
    
por FRB 08.04.2016 / 15:28

1 resposta

1

Porque você não colocou as instruções echo no código de script canalizado para x.sh . A segunda variante requer um echo adicional dentro do comando subshell $(...) . E a terceira variante não é válida, porque a expansão aritmética de $((...)) não funciona em números de ponto flutuante.

a2=100.  
echo "  
echo 1.1*$a2|bc;  
echo $(echo 1.1*$a2|bc);
">x.sh    

Resultado:

# sh x.sh
110.0
110.0
    
por 08.04.2016 / 15:31