Как работать с «для элементов цикла» с вычислениями в сценариях оболочки с помощью Powershell - PullRequest
0 голосов
/ 06 февраля 2019

Я выполняю операцию цикла со сценариями оболочки под Windows Powershell.Простой расчет с плавающей запятой с элементами цикла показывает следующее:

for L2 in 0.95 0.5 0.05
  do
    L1=$((1.0-$L2))
    echo $L1
done

I Ожидаю:

L1 должно быть 0.05,0.5,0.95

Однако появляется следующее сообщение об ошибке:

1.0-0.95: syntax error: invalid arithmetic operator (error token is ".0-0.95")

, и я заметил, что кто-то предложил добавить «| bc» для выполнения вычислений с плавающей запятой, например:

L1=$((1.0-$L2) | bc)

однако кажется, что powershell не имеет опции bc и возвращает:

 1.0-0.05: command not found
 bc: command not found
 L1 Value:

1 Ответ

0 голосов
/ 06 февраля 2019

Похоже, что вы пытаетесь использовать конструкцию Unix ($((...))) в оболочке Windows.PowerShell понимает арифметические операции без него:

 $L1 = 1.0 - $L2

Обратите внимание, что целевая переменная имеет префикс $, что также отличается от bash.

Ваш синтаксис циклатакже зависит от bash.Вам придется использовать правильную петлю for или foreach вместо того, что у вас есть.

В общем, вы должны принять во внимание, чтоWindows PowerShell не является оболочкой Unix, в частности, не bash, и пишите свой код соответствующим образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...