Arrays 在powershell中,如何从;剩余的;从命令行传递的参数?
当函数需要字符串数组时,在命令行上键入(“arg0”、“arg1”、“arg2”)很不方便。如本例所示:Arrays 在powershell中,如何从;剩余的;从命令行传递的参数?,arrays,powershell,parameters,Arrays,Powershell,Parameters,当函数需要字符串数组时,在命令行上键入(“arg0”、“arg1”、“arg2”)很不方便。如本例所示: function Exec-GradleScript( [Parameter(Mandatory)]String] $ScriptName [Parameter(Mandatory)][String[]] $ArgList ){ & "$ScriptName" $ArgList } 。。。-ScriptName之后的所有参数都必须
function Exec-GradleScript(
[Parameter(Mandatory)]String] $ScriptName
[Parameter(Mandatory)][String[]] $ArgList
){
& "$ScriptName" $ArgList
}
。。。-ScriptName之后的所有参数都必须使用显式数组语法。
我怎样才能避免这种情况,这样我就可以打字了
Exec-GradleScript foo.gradle arg0 arg1 arg2
还有一个$ArgList值要传递给可执行文件吗?注意:
- 该解决方案由提供,其中显示了如何使用
参数属性收集单个数组参数中所有未绑定的位置参数ValueFromRemainingArguments
- 我想你的功能已经简化了;如前所述,在链接答案中实现解决方案基本上不需要该函数-您只需调用
直接执行(假设foo.gradle arg0 arg1 arg2
是直接可执行的,这是函数建议的)foo.gradle
- 顺便说一句:使用
而不是$ScriptName
就足够了,因为与POSIX类shell不同,PowerShell允许您使用不带引号的变量,即使其值包含空格或其他shell元字符(不执行所谓的shell扩展)“$ScriptName”
至于: 当函数需要字符串数组时,在命令行上键入(“arg0”、“arg1”、“arg2”)很不方便 繁琐的语法
(“arg0”、“arg1”、“arg2”)
仅在表达式解析模式下需要。
在参数解析模式下-当您向命令传递参数时-可以使用更宽松的语法传递数组-不带括号和引号(除非元素是包含空格或PowerShell元字符的文本,例如,'arg 0'
):
#数组周围没有括号,元素没有引号。
Exec GradleScript foo.gradle arg0、arg1、arg2
有关PowerShell的两种基本解析模式的更多信息,请参阅。注意:
- 该解决方案由提供,其中显示了如何使用
参数属性收集单个数组参数中所有未绑定的位置参数ValueFromRemainingArguments
- 我想你的功能已经简化了;如前所述,在链接答案中实现解决方案基本上不需要该函数-您只需调用
直接执行(假设foo.gradle arg0 arg1 arg2
是直接可执行的,这是函数建议的)foo.gradle
- 顺便说一句:使用
而不是$ScriptName
就足够了,因为与POSIX类shell不同,PowerShell允许您使用不带引号的变量,即使其值包含空格或其他shell元字符(不执行所谓的shell扩展)“$ScriptName”
至于: 当函数需要字符串数组时,在命令行上键入(“arg0”、“arg1”、“arg2”)很不方便 繁琐的语法
(“arg0”、“arg1”、“arg2”)
仅在表达式解析模式下需要。
在参数解析模式下-当您向命令传递参数时-可以使用更宽松的语法传递数组-不带括号和引号(除非元素是包含空格或PowerShell元字符的文本,例如,'arg 0'
):
#数组周围没有括号,元素没有引号。
Exec GradleScript foo.gradle arg0、arg1、arg2
有关PowerShell的两种基本解析模式的更多信息,请参阅