Comportamento estranho do Ubuntu bc

1

Há um comportamento estranho no script Bash. Tentando executar as seguintes linhas em dois sistemas diferentes.

Script:

cpuIdle=$(mpstat 5 1 | grep Average | awk '{  print $12 }')
cpuUsage=$(bc <<< "100.0-$cpuIdle")

E aqui estão os detalhes das máquinas.

Sistema 1:

  • Ubuntu 14.04.04 LTS
  • Linux 4.2.0-36-generic #42~14.04.1-Ubuntu SMP Fri May 13 17:27:22 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
  • awk --version = GNU Awk 4.0.1
  • bash --version = GNU bash, version 4.3.11(1)-release (x86_64-pc-linux-gnu)

Sistema 2:

  • Ubuntu 16.04.04 LTS
  • Linux 4.4.0-22-generic #40-Ubuntu SMP Thu May 12 22:03:46 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
  • awk --version = GNU Awk 4.1.3, API: 1.1 (GNU MPFR 3.1.4, GNU MP 6.1.0)
  • bash --version = GNU bash, version 4.3.42(1)-release (x86_64-pc-linux-gnu)

O script é executado fluentemente no System-1, mas apresenta o seguinte erro no System-2 ao executar bc :

(standard_in) 1: syntax error

Posso confirmar que em ambos os sistemas o cpuIdle vairable está sendo configurado corretamente ( 1ª linha do script t).

Eu também posso confirmar que bc está funcionando sem problemas em ambos os sistemas quando eu configurei a variável cpuIdle manualmente ( como cpuIdle = 97.3 ).

Não consigo decidir se isso é um erro ou meu erro. Alguma sugestão ou idéias?

    
por benjamin button 06.06.2016 / 23:57

1 resposta

2

É a vírgula.

$ cpuIdle=$(mpstat 5 1 | grep Average | awk '{  print $12 }')
$ echo $cpuIdle
99,25

- >

$ cpuUsage=$(bc <<< "100.0-95,25")
(standard_in) 1: syntax error

e

$ cpuUsage=$(bc <<< "100.0-95.25")
$ echo $cpuUsage
4.75

Portanto, este poderia ser um problema de internacionalização (na Holanda, usamos uma vírgula para decimais). Eu diria: bug, alguém esqueceu de incluir uma vírgula como um possível sinal decimal.

Mude para a anotação americana e ela funcionará novamente.

    
por Rinzwind 07.06.2016 / 00:06