2015-08-25 2 views
0

Мне нужна помощь с моим скриптом; Я сделал первую часть, но во второй части я не совсем уверен, нужен ли второй foreach. Во-первых, скрипт выдает файлы и хэш из ветки. Рядом с хешем мне удалось добавить нотацию, которую я могу изменить позже, чтобы вывести «хеш» во вторую часть, которую я хочу поместить «файл» рядом с каждым выводимым файлом, ниже я включил, как должен быть выход, и это похоже на что; но я просто не могу получить «файловую» нотацию рядом с каждым именем файла.Foreach - добавить нотацию в цикл foreach, мне нужен вложенный foreach

$GitList = git log master..branch2 --pretty=format:'%H' --reverse 


foreach ($hash in $GitList) { 
    "$hash hash" 
    $files = git show $hash --pretty="format:" --name-only 
    $files 
} 


#-------------------------------output should be like below 

37b970b35681728db2faa4135681728d hash 
branch2/ScriptPart1.ps1 file 
37b970b371a7805a657030f687135681728d hash 
branch2/ScriptPart2.ps1 file 
branch2/ScriptPart3.ps1 file 
37b970b30a137b970b381e5d5135681728d hash 
branch2/ScriptPart2.ps1 file 
321b2feb5d37b970b32d47f4135681728d hash 

Заранее спасибо

+0

Я не знаю Powershell, но да, вы будете иметь, чтобы перебрать список '$ files'. – Schwern

ответ

2

я бы просто сделать быстрый и грязный Еогеасп-объект и сделать с ней ... Что-то вдоль линий:

$files | Foreach-Object { "{0} file" -f $_ } 
0

Вашей основной проблемы может что возвращаемое значение строки:

git show $hash --pretty="format:" --name-only 

обрабатывается PowerShell как массив строк с двумя элементами wh ich первый содержит пустую строку.

адресация второй пункт непосредственно был бы способ добиться того, что вы хотите сделать здесь:

$GitList = git log master --pretty=format:'%H' --reverse 

foreach ($hash in $GitList) { 
    "$hash hash" 
    (git show $hash --pretty="format:" --name-only)[1] + ' file' 
} 

Кстати: В зависимости от сценария вы можете рассмотреть возможность использования PSObjects в качестве выходного сигнала. Особенно, если вы планируете дополнительно обработать вывод вашего скрипта PowerShell:

foreach ($hash in $GitList) { 
    $file = (git show $hash --pretty="format:" --name-only)[1] 
    New-Object -Type psobject -Property @{'Hash'= $hash; 'File' = $file} 
} 
Смежные вопросы