选取特定的数组元素

选取特定的数组元素

我刚刚开始阅读"$@"and "$*",我想知道是否可以专门指向"$@"数组中的一个元素。就像不使用任何循环一样,我希望能够从 中选取元素号 3 "$@"。有没有办法这样做"$1+@"或类似的事情?我已经了解"${1}"但想具体了解"$@""$*"。我尝试搜索它,但没有找到与此相关的任何内容。

答案1

据说位置参数不是数组。
设置它们的方法是通过set。没有其他阵列需要这样。

$ set -- one two t33 f44
$ printf '%s\n' "$@"
one
two
t33
f44

但至少在 bash(以及 ksh 和 zsh)中,可以同样轻松地选择它们:

$ set -- one two t33 f44
$ echo "${@:2:1}"
two
$ echo "${@:2:2}"
two t33

答案2

$@不是一个数组:它只是一个参数列表。在 bash 中,您可以创建一个数组,使用其中的值对其进行初始化$@,然后使用索引:

declare -a foo=($@)

echo ${foo[2]}

数组索引从 0 开始,因此上面将第三个参数打印到脚本中。

答案3

本质上,你不能。问题是,$*$@不是数组;他们很简单变量。因此,不可能对它们建立索引。

它们的值只是字符串,定义方式略有不同。$1$2等使您可以访问各个组件。

相关内容