如何在不连接 Powershell 的情况下传递参数? [复制]

Posted

技术标签:

【中文标题】如何在不连接 Powershell 的情况下传递参数? [复制]【英文标题】:How to pass arguments without concatenating in Powershell? [duplicate] 【发布时间】:2018-08-28 09:50:52 【问题描述】:

(我是 PowerShell 新手,发现它是一种非常令人沮丧的语言)

我想创建一个带有参数和返回值的函数。不是火箭科学?反正我就是这么想的。但 PowerShell 不断连接我的论点 - 这是 MCVE 版本:

 function hello($a, $b) 
    Write-host "a is $a and b is $b"
 

 hello("first", "second")

我期待这会产生输出:

 a is first and b is second

没想到……

 a is first second and b is

除了它以一种我没想到的方式连接值之外,它也未能标记因此丢失的参数。

如何将参数传递给函数? (!!!!OMG WTF????!!!)

【问题讨论】:

它是一个shell,你可以像在命令行中那样传递参数。同样的方式你不会使用grep('pattern', 'file1')grep 'pattern' file1。它们匹配,因此您可以以几乎相同的方式使用(高级)函数、cmdlet 和本机二进制命令。 好吧,在 OP 的辩护中,您会在某些 shell 中使用括号作为函数参数。以 Python 为例。话虽如此,我建议 OP 在 powershell 提示符中键入:Get-Help functions 然后特别注意高级功能主题。如果您要学习 powershell,不妨立即以最符合最佳实践的方式直接学习。 【参考方案1】:

从您对函数的调用中删除 ()

function hello($a, $b) 
    Write-host "a is $a and b is $b"
 

 hello "first" "second"
or
hello -a "first" -b "second"

【讨论】:

以上是关于如何在不连接 Powershell 的情况下传递参数? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在不卸载powershell的情况下,有效禁用/启用powershel

如何在不大幅增加其大小的情况下在 PowerShell 中保存文本文件?

如何在不为其分配内存的情况下将缓冲区传递给 write()

如何在不传递参数的情况下使用riverpod 系列提供程序

在不提示的情况下在 Powershell 中获取当前用户的凭据对象

如何在不复制片段的情况下传递道具