Вызов Эха в функции предварительно ожидает строку эха к возвращаемому значению в Powershell

Эй парни, я - новичок Powershell и, кажется, продолжаю завоевываться популярность мало странных поведений как это. Вот некоторый тестовый код:

 function EchoReturnTest(){
     echo "afdsfadsf"
     return "blah"
 }

 $variable = EchoReturnTest
 echo ("var: " + $variable)

Выполнение этого сценария генерирует это, как произведено: "var: вздор afdsfadsf"

Почему функция только не возвращает строку "вздор"?

15
задан spilliton 28 January 2010 в 23:27
поделиться

1 ответ

Во-первых, функции PowerShell возвращают все бездействующие «вывод». Вы можете захватить вывод, назначив переменную, и вы можете игнорировать вывод, перенаправляя на $ NULL , например:

$arrayList.Add("hi") > $null

это обычно выводило бы что-то вроде 0 (индекс, где был добавлен), а потому мы Перенаправлена ​​до $ NULL, вывод не учитывается.

Во-вторых, ECHO - это просто псевдоним для «вывода записи», который записывает соответствующий объект к выходному потоку. Возвращение «бла» - это просто удобство, которое эквивалентно:

Write-Output "blah"
return

, поэтому ваша реализация вашей функции эквивалентна этому:

function EchoReturnTest(){  
    Write-Output "afdsfadsf"  
    Write-Output "blah"
    return
}  

, если вы хотите «увидеть» некоторую информацию на хост-консоли без него Рассматривается часть «вывода» функции, затем используйте запись записи, например:

function EchoReturnTest(){  
    Write-Host "afdsfadsf"  
    return "blah"
}

также, если у вас нет параметров, то вам не нужны Parens в конце имени функции, например, Функция ECHORETURKESTEST {возвращает «бла»} .

24
ответ дан 1 December 2019 в 03:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: