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