声明-n用于位置参数

时间:2017-11-22 16:36:56

标签: linux bash shell

在下面的代码中,我使用了一个用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

1 个答案:

答案 0 :(得分:2)

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

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

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