我怎样才能提供一个数组作为函数或脚本的位置参数?

提姆

在我的脚本中,我发现对数组的某些操作是可重用的。因此,我正在考虑将可重用代码重构为函数或脚本。

但是,如何编写函数或脚本,以便可以将数组作为位置参数提供给函数或脚本?或实现类似的目标?

谢谢。

库萨兰达

在((== 4.3)的最新版本中使用名称引用bash

foo () {
    local param1=$1
    local -n arr=$2

    printf 'array: %s\n' "${arr[@]}"
}

myarray=( some items go here )
foo something myarray

数组变量的名称作为第二个参数传递给函数。该函数声明一个名称引用变量,该变量接收该名称。对该名称引用变量的任何访问都将访问其名称已传递给该函数的变量。

这显然适用于多个数组。

请注意,在上面的示例中,您无法将命名变量传递arr给该函数,因此必须小心避免名称冲突ksh93,它也支持名称引用,由于范围不同,因此不会出现此问题)。


请注意,这种方法并不能调用另一个shell脚本时工作。调用另一个Shell脚本时,必须在该另一个脚本的命令行上传递该数组,这意味着它必须作为一组字符串传递。以这种方式传递单个数组相对容易,而Hauke Laging在他的回答中展示了如何执行此操作的基础知识

如果您完全控制数组的内容,则可以将它们的数据编码为单个字符串,方法可能是使用一些定界符对它们的元素进行定界,然后在目标脚本中解析这些字符串以重新形成数组。另一种可能性是在脚本之间采用JSON“接口”,这意味着您将数据编码为JSON,将其传递到脚本的标准输入(或类似输入),然后使用解码文档jq不过,这确实很麻烦,并且会增加大量开销。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我怎样才能聚合计数函数返回一个数字而不是一个数组

我怎样才能删除£从一个数组对象符号和保存呢?

我怎样才能把这个数组变成一个做同样事情的 ArrayList ?

我怎样才能把一个数组(在PHP)到表(JS)

我怎样才能得到一个数组的大小,所以我可以从一个函数声明所述数组

我怎样才能把这个静态函数变成一个允许参数的函数?

我怎样才能写一个指向函数?

我怎样才能得到一个数组中的一个元素在另一个数组中存在多少次?

我怎样才能使一些HTML单词组成一个数组?

我怎样才能有一个接受“我的类型”类型参数的抽象方法?

我怎样才能得到最大的 SortOrder 作为一个整数?

我怎样才能让这段代码从每个数组中选择一个随机单词来打印一个句子?

我怎样才能给每个元素一个不同的位置?

我怎样才能让 Neovim 的“e”地图增加一个位置?

我怎样才能从2个函数中创建一个?

我怎样才能让一个函数等到代码前一行完成

我怎样才能在数组结构中获得一个单一的值

我怎样才能返回一个循环?

我怎样才能重复一个模式?

我怎样才能返回一个 Promise?

我怎样才能替代一个函数来使查询更快?

我怎样才能把这个 foreach push 循环变成一个 reducer 函数?

我怎样才能使一个类装饰器不中断isinstance函数?

我怎样才能创建一个同时接受 Num 和 Maybe Num 的函数?

我怎样才能把这个 Python 代码变成一个函数?

我怎样才能从一个变量数组?

从数组中删除一个值。我怎样才能让它工作

我怎样才能牢固地返回一个结构体数组?

我怎样才能找出数组中的每个元素包含一个特定的单词?