声明-N用于位置参数



在以下代码中,我使用的是用 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

namerefs不能用于参考位置参数。

如果您想在不使用参数扩展语法进行间接扩展的情况下迭代参数,请考虑将它们倾倒到数值索引的数组中,然后将其索引到此:

args=( "$0" "$@" )
for ((i=$#; i<=1; i--)); do
  echo "${args[$i]}"
done

最新更新