我试图弄清楚如何从函数的参数中获取var名称。
我知道要获取var名称,你可以通过多种方式实现它:
#!/usr/bin/env bash
foo="bar"
var_name=${!foo@}
echo $var_name" = "$foo
var_name=${-+foo}
echo $var_name" = "$foo
var_name=$'foo'
echo $var_name" = "$foo
var_name=$"foo"
echo $var_name" = "$foo
所有这些示例都会生成输出foo = bar
在函数内部,参数变量是" $ {1}"," $ {2}"等等。我想要的是在传递之前获取var名称它作为该函数的函数的参数。例如:
#!/usr/bin/env bash
function sample() {
echo ${!1@} #This produce en error: test.sh: line 4: ${!1@}: bad substitution
echo ${-+1} #This produce "1" as output
echo $'1' #This produce "1" as output
echo $"1" #This produce "1" as output
}
foo="bar"
sample "${foo}"
预期输出为"foo"
。怎么能实现这个目标?