Powershell l oop с обратным отсчетом - PullRequest
0 голосов
/ 14 февраля 2020

Я пытаюсь напечатать предупреждение, чтобы пользователь знал, что 0 не является допустимым вариантом для назначения для класса. Только начал изучать powershell и не могу найти справки о том, как установить такой параметр.

Назначение равно 3.) Напишите al oop, который вычисляет $ num ^ 2 для каждой итерации и печатает значение используя Write-Host. Это l oop должно быть выполнено хотя бы один раз и начать обратный отсчет. Когда $ num = 0, l oop должен заканчиваться. Не позволяйте этому l oop получить $ num как 0, так как это приведет к бесконечному l oop. Если 0 установлено как $ num, выведите предупреждение, чтобы сообщить пользователю, что 0 не является допустимым параметром.

Пока это то, что у меня есть

$num=Read-Host -Prompt 'Enter a number'
do
{
   write-host $num
   $num--
}
until($num -eq -1)

Любая помощь будет с благодарностью

Ответы [ 2 ]

0 голосов
/ 14 февраля 2020

Попробуйте это:

$num = Read-Host -Prompt 'Enter a number'
$num = [int]::Parse( $num )

do
{
   write-host "$num square is $([Math]::Pow($num,2))" 
}
while(--$num)
0 голосов
/ 14 февраля 2020

Существуют две фундаментальные проблемы:

  • Read-Host всегда возвращает строку , а --, оператор декремента, может использоваться только для номер ; вы должны сначала преобразовать строку в число:

    • [int] $num = Read-Host 'Enter a number'
  • write-host $num $num-- не работает должным образом: в то время как $num ссылки расширены, конечный -- считается строковым литералом , а не оператором декремента; чтобы рассматривать $num-- как выражение , вы должны заключить его в (...); также, чтобы напечатать уже уменьшенное число, поменяйте местами операнды:

    • $num = 42; Write-Host ($num--) $num дает 42 41, как и предполагалось.
    • Неверно: $num = 42; Write-Host $num $num-- выход 42 42--
    • - сложные - правила, которые PowerShell использует при разборе аргументов команды без кавычек, суммированы в этом ответе
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...