如标题所述,nameref
(typeset -n
)在不使用位置参数时失败(例如:$1
)。
版本:sh(美国电话电报公司研究所)93u + m/1.0.0-beta.2 2021年12月17日
测试示例:
function func_a {
nameref ref=$1
ref=( a=1 b=2 c=3 )
}
function func_b {
typeset return_var=$1
nameref ref=$return_var
ref=( 1 2 3 )
}
# Success
function func_c1 {
typeset var1
func_a var1
echo "var1.a = ${var1.a}"
}
func_c1
# Failure
function func_c2 {
typeset var2
func_b var2
echo "var2[@] = ${var2[@]}"
}
func_c2
我期待相同的输出。我需要变量名的改变来坚持参数在函数中的解析和检查方式。
我是否误解了nameref
的工作原理?这是预期的行为吗?
1条答案
按热度按时间bvjveswy1#
它可能与位置参数没有太大关系,因为如果您第二次运行func_b,它就会成功。
它可能与复合变量
ref
有更大的关系,因为如果你赋值一个普通数组,它就会成功。这并不是问题的完整答案,但希望它能提供更多的调查材料。