Примечание: На Unix -подобных платформах элегантное решение tee /dev/tty
js2010 *1002* является самым простым; Помимо работы над Windows, приведенные ниже решения могут представлять интерес для построчной обработки вывода внешней программы в PowerShell.
A PowerShell (учитывая, что код в вашем вопросе PowerShell [1] ):
Я не уверен, как flutter
сообщает о своем прогрессе, но может работать следующее:
Если все идет к stdout :
$OUTPUT = flutter build ios --release --no-codesign | % {
Write-Host $_ # print to host (console)
$_ # send through pipeline
} | select -Last 1
Примечание: %
- это встроенный псевдоним для ForEach-Object
и select
один для Select-Object
.
Если сообщения о ходе выполнения go - stderr :
$OUTPUT = flutter build ios --release --no-codesign 2>&1 | % {
Write-Host $_.ToString() # print to host (console)
if ($_ -is [string]) { $_ } # send only stdout through pipeline
} | select -Last 1
[1] Как свидетельствует символ $
в имени переменной в LHS присвоения и пробелах вокруг =
($OUTPUT =
), ни один из которых не будет работать должным образом в bash
/ POSIX-подобных оболочках.