Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Powershell für Doofe?


Account
2019-11-07, 23:47:06
ich stolper hier gerade über ein recht simples problem, kriegs aber nicht auf die reihe, sollte selbsterklärend sein:
echo $args[0] + "bums"
echo "----------------"
$unnoetig = $args[0] + "bums"
echo $unnoetig
PS C:\> testps.ps1 dings
dings
+
bums
----------------
dingsbums
PS C:\>
wie sieht die korrekte syntax aus, wenn ich keine hilfsvariable erstellen will?

Darkman.X
2019-11-08, 01:15:14
Ich bin programmiertechnisch nur ein Laie, aber Google hat geholfen:
echo "$($args[0])bums"

Hier die dazugehörige, englische Erklärung:
Also when you use a PowerShell variable in a string, PowerShell only substitutes the variable's value. You can't directly use an expression like $args[0]. However, you can put the expression within a $() sub-expression group inside a double-quoted string to get PowerShell to evaluate the expression and then convert the result to a string.

Account
2019-11-08, 01:48:16
mein google-fu rostet :(
danke!

Monger
2019-11-08, 13:09:16
Das ist eine Lösung. Das Problem ist aber eigentlich ein anderes. Echo ist eine Methode mit einem Parameter und keinem Rückgabewert. Und auf eben den Rückgabewert bezieht sich das Plus.
Ergo, zum Beispiel klammern.

In dem Fall kannst du es dir aber leicht machen, weil echo ist gleichbedeutend mit dem Output Stream, und alles was du nicht auffängst, landet automatisch dort. Ergo, du kannst echo einfach weglassen.

$args[0] + "bums"

Account
2019-11-08, 13:52:32
echo war nur ein test um das problem zu isolieren, wollte eigentlich für ffmpegs ausgabedateinamen per regex am eingabenamen herumkaspern.
letztendlich stellte sich raus das ist völlig unnötig, weils heut jeden mist in ner library gibt und named parameter mir besser gefallen als simple argumente ;)

myMind
2019-11-08, 16:20:29
Langfristig besser gleich mit Write-Host, Write-Output (das gleiche wie echo), Write-Error, ... arbeiten und dann Write-Output nur, wenn man wirklich etwas zurückgeben will.

Weitere Varianten:
Write-Host (($args[0]) + "bums")
Write-Host ("" + $args[0] + "bums")