如何将数组作为参数传递给另一个脚本?

Posted

技术标签:

【中文标题】如何将数组作为参数传递给另一个脚本?【英文标题】:How do I pass an array as a parameter to another script? 【发布时间】:2011-11-01 10:29:42 【问题描述】:

由于某种原因,我似乎无法将字符串数组作为参数传递给脚本块。我在这里做错了什么?

我的脚本是从另一个脚本调用的:

param(
    [parameter(Mandatory=$true)]
    [string[]]$myarr
)

foreach ($elem in $myarr)
    $elem

我从另一个脚本中调用它

 $myarr = @("111", "222")
 start-job -filepath myscript.ps1 -arg $myarr

我只得到了数组中的第一项 - “111”。

【问题讨论】:

【参考方案1】:

尝试如下:

start-job -filepath myscript.ps1 -arg (,$myarr)

-ArgumentList 接受参数列表/数组。因此,当您提供-arg $myarr 时,就好像您将数组的元素作为参数传递。因此,您必须强制 PowerShell 将其视为单个参数,即一个数组。

【讨论】:

是的,它有效。你能解释一下为什么吗? :) 据我了解,() 中的逗号表示它实际上是一个包含两个子数组的数组,对吧? @Mishkin - 解释是 -ArgumentList 接受参数列表/数组。因此,当您提供-arg $myarr 时,就好像您将数组的元素作为参数传递。因此,您必须强制 powershell 将其视为单个参数,即一个数组。 如何传递数组和另一个变量? -arg (,$myarr, $singleValue)。例如,$singleValue = "x" 该问题仅在尝试传递单个数组参数时发生,当您传递一个数组和另一个参数时,您会使用逗号隐式创建另一个数组。例如,在-arg $array, $value 中,$array, $value 表达式是一个数组,您可以通过在命令行上计算它来查看它。 ($arr, 5)[0] 将打印 $arr; ($arr, 5)[1] 将打印 5

以上是关于如何将数组作为参数传递给另一个脚本?的主要内容,如果未能解决你的问题,请参考以下文章

Redis Lua 脚本 - 如何将数组作为参数传递给 nodejs 中的 Lua 脚本?

如何将数组参数传递给 Bash 脚本

如何将向量作为参数传递给另一个向量?

如何将数组的值作为第二个参数传递给 awk 的 split 函数?

如何将带有 args 的成员函数作为参数传递给另一个成员函数?

PL/SQL:将字符串的“数组”作为参数传递给 sql