![需要在 if 语句中评估的不是变量本身,而是作为新变量的值](https://linux22.com/image/887118/%E9%9C%80%E8%A6%81%E5%9C%A8%20if%20%E8%AF%AD%E5%8F%A5%E4%B8%AD%E8%AF%84%E4%BC%B0%E7%9A%84%E4%B8%8D%E6%98%AF%E5%8F%98%E9%87%8F%E6%9C%AC%E8%BA%AB%EF%BC%8C%E8%80%8C%E6%98%AF%E4%BD%9C%E4%B8%BA%E6%96%B0%E5%8F%98%E9%87%8F%E7%9A%84%E5%80%BC.png)
我正在开发一个函数,用于检查某些包是否已安装并优先选择自己的构建,这些路径存储在配置文件中。
因此该函数会得到如下输入
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