Ubuntu BC странное поведение

В скрипте Bash есть странное поведение. Попытка запустить следующие строки в двух разных системах.

Сценарий:

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

А вот детали машин.

Система-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)

Система-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)

Скрипт свободно работает в System-1, но выдает следующую ошибку на System-2 во время работы bc:

(standard_in) 1: syntax error

Я могу подтвердить, что в обеих системах cpuIdle vairable настроен правильно ( 1-я строка из писания т).

Я также могу подтвердить, что bc работает без проблем в обеих системах, когда я вручную установил переменную cpuIdle (, как cpuIdle = 97.3 ).

Не могу решить, это ошибка или моя ошибка. Любое предложение или идеи?

1
задан 7 June 2016 в 11:07

1 ответ

Это - запятая.

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

->

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

и

$ cpuUsage=$(bc <<< "100.0-95.25")
$ echo $cpuUsage
4.75
<час>

, Таким образом, это могло быть проблемой интернационализации (в Голландии, мы используем запятую для десятичных чисел). Я сказал бы: ошибка, кто-то забыл включать запятую как возможный десятичный знак.

Переключатель к американской аннотации и это будет работать снова.

2
ответ дан 7 June 2016 в 11:07

Другие вопросы по тегам:

Похожие вопросы: