Cálculo problemático de bc no shell script

2

No Ubuntu 14.04.1 LTS de 64 bits Estou escrevendo um script de shell e se eu definir o início do sequence usado no for loop com uma variável em vez de um constante Eu tenho um comportamento muito estranho e há muitos erros da calculadora bc . Você pode executar o seguinte trecho de código para reproduzir os erros:

#!/bin/bash
S=0.030
F=0.150
N=30
DIFF='echo $F - $S | bc -l'
dw='echo $DIFF / $N | bc -l'
is='echo $S / $dw | bc -l'
if='echo $F / $dw | bc -l'
for i in 'seq $is $if' 
    do
        w='echo "scale=3; $i * $dw" | bc -l'
done

Se eu alterar o início da sequência para uma constante, ela funcionará perfeitamente, mas quando for uma variável, haverá problemas com a saída da seguinte forma:

(standard_in) 1: syntax error
...
...
(standard_in) 1: syntax error

Qual pode ser a razão por trás desse comportamento? Eu gostaria de receber suas sugestões e comentários.

    
por Vesnog 24.12.2014 / 02:09

1 resposta

2

O problema é que o separador de ponto decimal na minha instalação do Ubuntu foi definido como , (vírgula) em vez de . (ponto). Eu mudei com o seguinte comando:

sudo update-locale LC_NUMERIC="en_GB.UTF-8"

E o problema foi resolvido.

    
por 24.12.2014 / 13:26