击。获取函数

时间:2017-12-25 11:29:08

标签: bash parameter-passing

我试图弄清楚如何从函数的参数中获取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"。怎么能实现这个目标?

0 个答案:

没有答案