#arrays #powershell #loops #for-loop
#массивы #powershell #циклы #для цикла
Вопрос:
Новое для сценариев Powershell из Python. Я просто не уверен, почему ‘$ i = 1’ не перезаписывает $ i до первого ‘write-host («i: «)’ :
$myList = 5.6, 4.5, 3.3, 13.2, 4.0, 34.33, 34.0, 45.45, 99.993, 11123
write-host("using for loop")
for ($i = 0; $i -le ($myList.length - 1); $i = 1){
write-host("i: ")
$i
write-host("myList[i]: ")
$myList[$i]
}
Я не понимаю, что делают точки с запятой и как это связано с приведенным ниже блоком кода. Код работает так, как я хочу. Но я прочитал это как «инициализируйте i равным 0, если i меньше или равно 9 — увеличьте i на 1». Но если бы это было так, то мне было бы присвоено значение 1 перед первым запуском узла записи. Вместо этого он передает 0, а затем увеличивает $ i.
Комментарии:
1. Вы указываете $i начинать с 0 (первый цикл) и увеличивать 1 в конце каждого цикла, в то время как $ i меньше или равно длине списка минус 1. Если вы хотите начать с 1, установите $i равным 1 в начале.
2. также … [1] вы НЕ должны использовать
()
around input для командлета или функции, если вы не ЗНАЕТЕ, что это необходимо. похоже, вашимWrite-Host
вызовам это не нужно. [2] вы отключили$
in в своихW-H
вызовах, поэтому переменная не вычисляется… он просто печатаетi:
amp;myList[i]:
. [ усмешка ]
Ответ №1:
Перевод
set $variable equal to 0
;
do a thing while $variable is less than OR equal to (<number of items in list> -1)
; finally set $variable equal to $variable 1
for (<Initial iterator value>; <Condition>; <Code to increase iterator>)
{
<Statement list>
}
Statement list
Выполняется перед Code to increase iterator
ШАГ 1
В начале инструкции цикла for начальное значение считывается и сохраняется в памяти.
Пример: $i = 0
ШАГ 2
Оператор цикла for вычисляет логический результат выражения внутри заполнителя условия. Если результат равен $false, цикл for завершается. Если результат равен $true, то цикл for переходит к следующему шагу.
Пример: $i -le ($list.length -1)
ШАГ 3
PowerShell запускает код внутри заполнителя списка инструкций. Может быть одна или несколько команд, блоков сценариев или функций.
Пример: Write-Ouput $i
ШАГ 4
На этом шаге выполняется выражение в повторяющемся заполнителе, которое обновит текущее значение исходного заполнителя. Затем поток вернется к шагу 2.
Пример: $i