使用zsh,我可以使用$5
获得第五个参数。但是如果5
是一个变量呢?我想出了这种方法,通过索引打印出前五个参数(而不仅仅是echo $1 $2 $3 $4 $5
):
for i in {1..5}
do
echo $(eval echo "\$$i")
done
但肯定有更好的方法吗?
我知道循环所有参数的方法比较简单。在我的特定情况下,我想向后遍历参数列表。对此的帮助也将受到赞赏。
答案 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]
结合起来,但可能有更好的方法。