需要在 if 语句中评估的不是变量本身,而是作为新变量的值

需要在 if 语句中评估的不是变量本身,而是作为新变量的值

我正在开发一个函数,用于检查某些包是否已安装并优先选择自己的构建,这些路径存储在配置文件中。

因此该函数会得到如下输入

rsync

然后它继续形成一个名为

$bin_variable_name

其价值

RSYNC_BIN

在上面提到的配置文件中可能有这样的一行。

RSYNC_BIN="/home/<username>/Software/rsync"

因此,如果该文件位于函数的开头,则变量 $RSYNC_BIN 具有除 '' 之外的值。

我现在需要在 if 语句中检查这一点。不幸的是,我无法直接引用 $RSYNC_BIN,因为该函数应该适用于任何给定的输入。所以我需要以某种方式“评估”

$bin_variable_name

在 if 语句中,这样 bash 就不会执行

if [[ $bin_variable_name == '' ]]; then ...

反而

if [[ $<whatever comes from $bin_variable_name>_BIN = '' ]]; then ...

这可能吗?

谨此致谢。

答案1

间接

$ bin_variable_name=RSYNC_BIN
$ RSYNC_BIN="/home/<username>/Software/rsync"
$ echo "${!bin_variable_name}"
/home/<username>/Software/rsync

相关内容