📜  将数组传递给 bash 函数 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:09:36.903000             🧑  作者: Mango

将数组传递给 bash 函数

在 bash 脚本编程中,有时候我们需要把数组作为参数传递给函数,以进行操作或处理。下面是一些方法可以达到这个目的。

使用 $@ 或 $*

$@$* 表示所有参数,包括数组。我们可以在函数内部访问这些参数,就像访问普通的函数参数一样。

array=(a b c)
function foo() {
  echo "The array is: $*"
}

foo "${array[@]}"
# The array is: a b c

这里我们使用 "${array[@]}" 把数组传递给函数 foo(),然后在函数内部使用 $* 获取所有参数。

使用 $1 之后的参数

我们也可以把数组当作多个参数来传递给函数。函数内部可以使用 $1$2 等获取这些参数。

array=(a b c)
function foo() {
  echo "The first array element is: $1"
  echo "The second array element is: $2"
  echo "The third array element is: $3"
}

foo "${array[@]}"
# The first array element is: a
# The second array element is: b
# The third array element is: c

在这个例子中,我们使用 "${array[@]}" 把数组传递给函数 foo(),然后在函数内部使用 $1$2$3 获取这三个参数。

使用 shift 命令

另一种方法是使用 shift 命令来移动参数位置,然后再在函数内部使用 $1$2$3 等获取这些参数。

array=(a b c)
function foo() {
  shift
  echo "The first array element is: $1"
  shift
  echo "The second array element is: $1"
}

foo "${array[@]}"
# The first array element is: b
# The second array element is: c

在这个例子中,我们首先使用 "${array[@]}" 把数组传递给函数 foo(),然后在函数内部使用 shift 命令移动参数位置,然后再使用 $1$2 获取这两个参数。

总结

这些是在 bash 中将数组传递给函数的三种方法。可以根据具体的需求使用不同的方法。