Precisa avaliar não a própria variável mas valor como nova variável em if-statement

0

Estou trabalhando em uma função que verifica se certos pacotes estão instalados e prefere as próprias compilações, que são armazenados em um arquivo de configuração.

Então a função é uma entrada como

rsync

Em seguida, ele cria uma nova variável chamada

$bin_variable_name

que tem o valor

RSYNC_BIN

No arquivo de configuração mencionado acima, pode haver uma linha como essa.

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

Portanto, se este arquivo é originado no início da função, a variável $ RSYNC_BIN tem um valor diferente de ''.

Agora preciso verificar isso em uma declaração if. Infelizmente, não posso referenciar $ RSYNC_BIN diretamente, pois a função deve funcionar com qualquer entrada fornecida. Então eu de alguma forma preciso "avaliar"

$bin_variable_name

dentro da declaração if, para que o bash não seja executado

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

mas

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

Isso é possível?

Obrigado por cumprimentar.

    
por Markus 28.09.2016 / 21:48

1 resposta

3

Com indireção

$ bin_variable_name=RSYNC_BIN
$ RSYNC_BIN="/home/<username>/Software/rsync"
$ echo "${!bin_variable_name}"
/home/<username>/Software/rsync
    
por steeldriver 28.09.2016 / 22:40