В сценарии Bash существует странное поведение. Попытка запустить следующие строки в двух разных системах.
Сценарий:
cpuIdle=$(mpstat 5 1 | grep Average | awk '{ print $12 }')
cpuUsage=$(bc <<< "100.0-$cpuIdle")
И вот детали машин.
Сценарий: [ ! d2]
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)System-2:
Ubuntu 14.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 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 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-я строка скрипта). [ ! d20]
Я также могу подтвердить, что bc работает без проблем в обеих системах, когда я устанавливаю переменную cpuIdle вручную ( 1-я строка скрипта ). [!d23 ]
Не могу решить, является ли это ошибкой или моей ошибкой. Любое предложение или идеи?