Lê string com a variável $ USER como texto e soluciona

3

Eu tenho alguns arquivos de configuração. Arquivo de configuração contém string: LocalPath /media/$USER

Eu li o config-file no bash-script:

while read var value
do
    export "$var"="$value"
done < my-conf-file.conf

Então, posso usar $LocalPath no bash-script. É igual a: /media/$USER , mas eu quero ter: /media/user1 (user1 é meu usuário).

Como posso implementá-lo?

    
por Yura Shinkarev 08.11.2017 / 12:52

2 respostas

9

read não expande as variáveis do seu arquivo de configuração.

Você pode verificar isso:

$ read username
$USER
$ echo $username
$USER

Esta resposta no Stackoverflow oferece uma solução.
Altere seu script para isso para expandir as variáveis:

while read var value
do
    export "$var"="$value"
done < <(envsubst < my-conf-file.conf)
    
por RoVo 08.11.2017 / 13:08
1

Como Kyle Strand sugeriu em um comentário , a solução mais fácil é tornar o arquivo de configuração um script Bash:

export LocalPath=/media/$USER

Em seguida, crie o código a partir do seu script principal:

source my-conf-file.sh

Ou se você tem um monte de variáveis, e não quer digitar export para cada uma, faça o arquivo de configuração assim:

set -a
LocalPath=/media/$USER
set +a
    
por wjandrea 08.11.2017 / 19:17

Tags