声明-n用于位置参数

问题描述 投票:0回答:1

在下面的代码中,我使用的是使用declare -n声明的引用变量:

declare -n b="a"
echo "$b"

是否也可以使用参考位置参数?假设我想做这样的事情:

for ((i=$#; i>=1;i--)); do
    a="${!i}"
    echo "$a"
done

但“简化”,无需参数扩展:

for ((i=$#; i>=1;i--)); do
    declare -n a=$i
    echo "$a"
done
linux bash shell
1个回答
2
投票

Namerefs不能用于引用位置参数。

如果要在不使用参数扩展语法进行间接扩展的情况下无序迭代您的参数,请考虑将它们转储到数字索引的数组中并索引到:

args=( "$0" "$@" )
for ((i=$#; i<=1; i--)); do
  echo "${args[$i]}"
done
© www.soinside.com 2019 - 2024. All rights reserved.