如何将数组作为参数传递给另一个脚本?
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 脚本?
如何将数组的值作为第二个参数传递给 awk 的 split 函数?