2016-08-18 2 views
0

Призыв к циклу и попытка добавить значение $ i вместе с переменной, вызванной внутри функции. не уверен, как это сделать. Каждый раз я получаю сообщение об ошибке «Неожиданный токен« i »в выражении или выражении». любые предложения/идеи, пожалуйста.append forloop значение переменной итератора

Благодаря Крису. Его код работает отлично ..

код:

function Get-Data { 
    param(
     # Consider giving this a more meaningful name 
     [Int]$i 
    ) 

    # Assigns the value in the first index from -split to $null 
    # and the value in the second index to $msgs. 
    $null, $msgs = (b2b.exe -readparams "msgs${i}data" | Select-Object -Skip 1 -First 1) -split '=' 
    $null, $bytes = (b2b.exe -readparams "bytes${i}data" | Select-Object -Skip 1 -First 1) -split '=' 

    [PSCustomObject]@{ 
     MData = $msgs.Trim() 
     BData = $bytes.Trim() 
    } 
} 

for ($i=0; $i-le 3; $i++) { 
    $data = Get-Data $i 
    write-host "for MData$i $($data.MData)" 
    write-host "for BData$i $($data.BData)" 
} 
+0

Что вы пытаетесь сделать с переменными при использовании '$ M $ i'? Конкатенация как строка? Если это так, вам нужно сделать его строкой '' $ M $ i "'. Если вы пытаетесь создать переменную на основе $ i, вам нужно использовать 'New-Variable 'M $ i". –

+0

Вам может быть лучше, добавив пример того, что вы пытаетесь проанализировать с помощью рекурсивной функции. У меня нет проблем с передачей $ i для управления глубиной, но назначение переменной путается без контекста. –

+0

@ Крис, я пытаюсь создать переменную, основанную на $ i, так что догадайтесь, мне нужно попробовать ваше предложение, то есть New-Variable «M $ i». Позвольте мне попробовать сейчас – HULK

ответ

1

Я не могу сказать вам, если это будет работать, но я бы не полагаться на глобально назначенных переменных для передачи информации из функции.

Я подозреваю, что может потребоваться небольшая работа над построением параметров для b2b.exe.

function Get-Data { 
    param(
     # Consider giving this a more meaningful name 
     [Int]$i 
    ) 

    # Assigns the value in the first index from -split to $null 
    # and the value in the second index to $msgs. 
    $null, $msgs = (b2b.exe -readparams "msgs${i}data" | Select-Object -Skip 1 -First 1) -split '=' 
    $null, $bytes = (b2b.exe -readparams "bytes${i}data" | Select-Object -Skip 1 -First 1) -split '=' 

    [PSCustomObject]@{ 
     MData = $msgs.Trim() 
     BData = $bytes.Trim() 
    } 
} 

for ($i=0; $i-le 3; $i++) { 
    $data = Get-Data $i 
    write-host "for MData$i $($data.MData)" 
    write-host "for BData$i $($data.BData)" 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^