Синтаксическая ошибка в оболочке bash при попытке выполнить простой расчет - PullRequest
1 голос
/ 04 мая 2020

У меня синтаксическая ошибка ((standard_in): синтаксическая ошибка) в 3-й и 5-й строке.

#!/bin/bash
i=`echo "8.8007751822"|bc`
rws = `echo "0.49237251092*$i" |bc`
rmt = `echo "0.85 * $rws"| bc`
dx  = `echo "log ($rws / 0.000001) / 720.0" | bc`;

Может кто-нибудь мне помочь?

1 Ответ

1 голос
/ 04 мая 2020

Несколько вещей:

  • Назначения не должны иметь пробелов вокруг =
  • i=`echo "8.8007751822"|bc` - это действительно сложный способ написания i=8.8007751822
  • bc не имеет функции log, для натурального логарифма есть только ll требует, чтобы опция -l была включена)

Я бы переместил все в bc вместо того, чтобы вызывать его несколько раз:

bc -l <<'EOF'
i = 8.8007751822
rws = i * 0.49237251092
rmt = 0.85 * rws
dx = (l(rws / 0.000001) / l(10)) / 720
dx
EOF

Это печатает значение dx.

...