Aufruf von Echo in einer Funktion pre-pends echo string Rückgabewert in der Powershell
Hey Leute, ich bin ein Powershell-noob und scheinen immer wieder auf kleine seltsame Verhaltensweisen wie diese. Hier ist etwas test-code:
function EchoReturnTest(){
echo "afdsfadsf"
return "blah"
}
$variable = EchoReturnTest
echo ("var: " + $variable)
Läuft dieses Skript generiert, das als Ausgabe: "var: afdsfadsf bla"
Warum funktioniert die Funktion nicht nur den string "bla"?
- nur eine Vermutung, aber es sieht aus wie STDOUT (also das, was echo ist-Druck) und der Rückgabewert weggeworfen werden in der gleichen stream. Sie könnten in der Lage sein, um Sie zu zwingen, sich zu trennen, indem Sie sagen, echo drucken zu STDERR: echo "afdsfadsf" 1>&2;
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erste, PowerShell-Funktionen wieder alle uncaptured "Ausgang". Erfassen Sie die Ausgabe durch die Zuordnung einer Variablen zu, und Sie können Sie ignorieren, Ausgabe umleiten, um
$null
z.B.:Normalerweise wäre die Ausgabe etwas wie 0 (der index, mit dem "Hallo" wurde Hinzugefügt), sondern weil wir umgeleitet auf $null festlegen, wird die Ausgabe ignoriert.
Zweiten
echo
ist nur ein alias für "Write-Output" die schreibt das entsprechende Objekt auf den Ausgabe-stream.return "blah"
ist nur eine Bequemlichkeit, die ist äquivalent zu:Damit Sie Ihre Implementierung der Funktion ist äquivalent zu dieser:
Wenn Sie wollen, zu "sehen" einige Informationen über die host-Konsole, ohne dass es als Teil der "output" einer Funktion, dann verwenden Sie Write-Host z.B.:
Auch, wenn man keinen Parameter, dann brauchen Sie nicht, die Klammern am Ende den Namen der Funktion, z.B.
function EchoReturnTest { return 'blah' }
.