String 如何确定在bash中传递给函数的变量的值?

String 如何确定在bash中传递给函数的变量的值?,string,bash,shell,String,Bash,Shell,因此,我有一个函数,它要求用户输入一些信息,然后使用eval将输入值分配给传入的变量名。即 eval "$1='$input'" 但是我想检查$1是否为空,因为如果不是空的话,我不想给它重新赋值。这个函数被多次调用,所以最好是在每次调用时不做检查就添加一些签入 我试过了 if [[ ! -z "$1" ]]; then return fi 但是变量$1的计算结果是我传入的变量名 例如,\u function\u call VAR\u A使用BASH间接寻址,首先获取名称存储在$1中的

因此,我有一个函数,它要求用户输入一些信息,然后使用
eval
将输入值分配给传入的变量名。即

eval "$1='$input'"
但是我想检查
$1
是否为空,因为如果不是空的话,我不想给它重新赋值。这个函数被多次调用,所以最好是在每次调用时不做检查就添加一些签入

我试过了

if [[ ! -z "$1" ]]; then
    return
fi
但是变量
$1
的计算结果是我传入的变量名


例如,
\u function\u call VAR\u A
使用BASH间接寻址,首先获取名称存储在
$1
中的变量:

var1=${!1}

# then
if [[ ! -z "$var1" ]]; then
   exit 1
fi
您可以使用
declare-g“$1=$input”
而不是eval。它更安全一些,也更容易阅读。