zsh中的索引参数

时间:2012-10-07 21:42:08

标签: arguments zsh

使用zsh,我可以使用$5获得第五个参数。但是如果5是一个变量呢?我想出了这种方法,通过索引打印出前五个参数(而不仅仅是echo $1 $2 $3 $4 $5):

for i in {1..5}
do
  echo $(eval echo "\$$i")
done

但肯定有更好的方法吗?


我知道循环所有参数的方法比较简单。在我的特定情况下,我想向后遍历参数列表。对此的帮助也将受到赞赏。

2 个答案:

答案 0 :(得分:3)

要遍历位置参数,只需使用for循环:

for x; do echo $x; done

反向迭代它们:

for x in "${(Oa)@}"; do echo $x ; done

要反转参数:

set "${(Oa)@}"

答案 1 :(得分:0)

在zsh(仅限zsh,apparently)中,@是一个数组。实际上你可以像这样使用它:

for i in {1..5}
do
  echo $@[i]
done

至于向后循环,我猜你可以将for i in {$#..1}$@[i]结合起来,但可能有更好的方法。