【发布时间】:2015-03-29 04:38:31
【问题描述】:
我正在尝试修改作为参数传递给函数的数组。到目前为止,我在函数之外有一个空数组:
buckets=()
然后我有一个接受 2 个参数的函数。第一个参数是我要填充的空数组。第二个参数是包含我要用来填充数组的数据的文件的名称。
到目前为止,我所做的是创建一个临时数组。然后用文件的内容填充临时数组。我就是这样做的:
fillarray ()
{
# Declare the paramater as a temporary array
declare -a tempArray=("${!1}")
# Fill it up
while IFS= read -r entry; do
tempArray+=("$entry")
done < <(jq -r '.data | .[].name' $2)
最后一步是将参数数组(又名存储桶)设置为我们刚刚填充的临时数组的内容。有关如何执行此操作的任何建议?
【问题讨论】:
-
如果你的 tempArray 有你需要的东西,那么将它复制到 buckets 数组会很容易,例如: Unix=('Debian' 'Red hat' 'Ubuntu' 'Suse' 'Fedora' 'UTS' 'OpenLinux'); Linux=("${Unix[@]}");回声 ${Linux[@]};有关更多操作,请参阅此内容:thegeekstuff.com/2010/06/bash-array-tutorial ---或查看此内容以将数组复制到另一个 stackoverflow.com/questions/19417015/…
-
@ArunSangal 如果我有并且知道变量名,你给出的例子就可以工作。我的问题是函数内部的泛型参数会修改函数外部的变量。我正在尝试重构我的代码,这样我就不必重复自己了。这就是为什么我试图将这个 fillarray 捕获为一个函数并传入我想要填充的数组。谢谢你的教程。我将阅读它们以更加熟悉 bash。
标签: arrays bash parameters jq