Executando comandos que são impressos na saída padrão

2

Como eu executo comandos que imprimo na saída padrão usando o awk, por exemplo, eu uso o awk para imprimir:

grep -B100 some file1.tcl
grep -B100 some file2.tcl

Em seguida, armazene-o em um arquivo .sh e, em seguida, crie o arquivo. É possível canalizá-lo para algum lugar para que os comandos sejam executados?

awk '{print xx}' | pipeline
    
por identical123456 26.04.2018 / 21:39

3 respostas

6

Basta enviá-los para o seu shell:

$ printf 'echo foo\necho bar\n' | bash
foo
bar
    
por 26.04.2018 / 21:44
6

Para algo mais avançado que um comando simples (e comandos simples também, é claro):

eval "$( awk ... )"

Isso executaria o código no ambiente do shell atual e, portanto, o código também poderia definir och modify variables em seu shell.

No entanto, como obviamente você está querendo analisar outros arquivos usando grep , por que não que com o mesmo programa awk ? ... ou com outro programa awk que lê padrões e nomes de arquivos?

    
por 26.04.2018 / 21:55
2

Você nem precisa canalizá-lo, já que você já está vivendo perigosamente; apenas execute seu comando que sempre sempre exibe comandos seguros para executar em uma construção de expansão de subshell:

$ $( awk 'BEGIN { print "echo hello" }' )
hello
    
por 26.04.2018 / 21:50