Eu tenho um arquivo de texto com determinadas instruções de instalação e sei que posso receber por uma ocorrência única no arquivo. Por exemplo, o arquivo de texto tem algo como:
MYDIR = `find / home / nome do usuário somedir` exportar PERL5LIB = $ PERL5LIB: $ MYDIR
No bash, como posso executar as linhas após um grep no arquivo? Algo como:
executar resultado de "grep somedir INSTALLFILE" executar resultado de "grep 'export PERL5LIB' INSTALLFILE"
Respostas:
Premissas:
Você pode redirecionar seus comandos para um arquivo temporário e executar o seguinte:
Ou você pode avaliar os resultados
Atualizando uma resposta antiga. O que eu faria hoje é usar uma substituição de processo:
fonte
source <(...)
, para , você precisa do bash 4 ou superior. Não funcionou com versões mais antigas (embora o zsh estivesse OK).Para avaliar as linhas em um processo de shell separado:
Para avaliar as linhas no processo do shell em execução:
fonte
-A 1
ou-B 1
como sinalizadores em um ou outro de seusgrep
s para buscar as duas linhas com um grep e usá-lo em qualquer uma das soluções @Gilles.sh
pode haver um link simbólico para outro shell em vez daquele que você esperava, portanto, os resultados podem ser imprevisíveis. Para ser seguro, específico exatamente o shell que você está esperando, por exemplogrep somedir INSTALLFILE | bash
Você já pensou em usar o recurso 'exec' de find como em:
fonte