我刚刚开始阅读"$@"
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
等使您可以访问各个组件。