Вопрос PowerShell о печати переменных внутри строк - PullRequest
0 голосов
/ 26 мая 2020

Я новичок в Powershell.

function weekendplans($a,$b,$c)
{
    $message = "This is a $a $b and an $c"
    $message
}
weekendplans("pear", "apple", "orange")

Когда я запускаю этот код, я получаю результат: This is a pear apple orange and an

Я знаю, что могу просто использовать строковый формат, чтобы исправить это, но мне было любопытно, почему это происходит в первое место. Спасибо!

Ответы [ 2 ]

4 голосов
/ 26 мая 2020

вы должны вызвать, как показано ниже

function weekendplans($a,$b,$c)
{
$message = "This is a $a $b and an $($c)"
$message
}
weekendplans "pear" "apple" "orange"

с тем, как вы передали, все аргументы назначены на $a

function weekendplans($a,$b,$c)
{

Write-Host "a is $a"
Write-host "b is $b"
Write-host "c is $c"

$message = "This is a $a $b and an $c"
$message
}
PS C:\> weekendplans("pear", "apple", "orange")

работает выше дает мне

a is pear apple orange
b is 
c is 
This is a pear apple orange  and an 

Правильный способ передачи параметров в оболочке питания - через пробел, разделенный запятой

, если вы не знаете, вы можете вызвать .NetClasses в PowerShell, они называются разделенными запятыми. Ниже приведен один пример

[System.DateTime]::DaysInMonth(2020,6)

В скобках используются аргументы NET только методы

Параметры в вызовах функций в PowerShell (все версии) через пробел, а не через запятую. Кроме того, круглые скобки совершенно не нужны и вызовут ошибку синтаксического анализа в PowerShell 2.0 (или более поздней версии), если Set-StrictMode активен. Аргументы в скобках используются только в методах. NET.

Дополнительная литература и ссылки:

Как передать несколько параметров в функцию в PowerShell?

1 голос
/ 26 мая 2020

Наряду с ответом @ TheGameiswar вы можете использовать подход отладки для бедняков, используя сжатие переменной для назначения переменной и вывода на экран одновременно. Итак, переходите к тому, что вы пробуете, по одному сегменту за раз ...

function weekendplans($a,$b,$c)
{
($message = "This is a $a $b and an $c")
}
weekendplans('pear', 'apple', 'orange')
<#
# Results

The function or command was called as if it were a method. 
Parameters should be separated by spaces. 
For information about parameters, see the about_Parameters 

Help topic.
At line:6 char:1
+ weekendplans('pear', 'apple', 'orange')
...
#>

function weekendplans($a,$b,$c)
{
($message = "This is a $a $b and an $c")
}
weekendplans 'pear', 'apple', 'orange'
<#
# Results

This is a pear apple orange  and an 
#>

function weekendplans($a,$b,$c)
{
    ($message = "This is a $a")
    ($message = "This is a $b")
    ($message = "This is a $c")
}
weekendplans 'pear', 'apple', 'orange'
<#
# Results

This is a pear apple orange
This is a 
This is a 
#>

function weekendplans($a,$b,$c)
{
    ($message = "This is a $a")
    ($message = "This is a $b")
    ($message = "This is a $c")
}
weekendplans 'pear' 'apple' 'orange'
<#
# Results

This is a pear
This is a apple
This is a orange
#>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...