shell script não é possível definir a variável de ambiente com o valor grepped

0

No script de shell, desejo aplicar um valor ao arquivo de log e defini-lo como o valor de um ambiente. No arquivo de log, há uma linha como esta:

SOME_PATH=/some/specific/path

No meu script de shell, eu grudo a palavra-chave SOME_PATH , e obtive a linha acima e divido-a com = , mas agora sou capaz de definir a variável de ambiente:

line='grep "SOME_PATH" /path/to/the/log.log'
path=${line##*=} 
export SOME_PATH="$path"  #I cannot change the environment variable with this line.

E se eu tiver o script abaixo no meu arquivo bash, a variável de ambiente mudará se eu for o arquivo bash.

export SOME_PATH=/some/specific/path
    
por user4016367 14.04.2015 / 11:45

1 resposta

1

Em princípio, sua solução deve funcionar, mas não é robusta. Se, por exemplo, você tiver no arquivo grep ed um comentário (ou alguma outra coisa) na linha correspondente, diga:

SOME_PATH=/some/path # this is some path

o comentário também fará parte do nome que você expande em path . Para verificar se inspecionam o que realmente está no caminho, por exemplo por printf "'%s'\n" "$path" .

Observe que a configuração de uma variável de ambiente dessa forma afetará apenas a instância do shell em que você a definiu e os subprocessos, mas não o ambiente ao redor.

    
por 14.04.2015 / 12:10