执行打印在标准输出上的命令

执行打印在标准输出上的命令

如何执行使用 awk 在标准输出上打印的命令,例如,我使用 awk 打印出来:

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

然后将其存储在 .sh 文件中,然后获取该文件。是否可以将其通过管道传输到某个地方以便执行命令?

awk '{print xx}' | pipeline

答案1

只需将它们通过管道传输到您的 shell:

$ printf 'echo foo\necho bar\n' | bash
foo
bar

答案2

对于比简单命令更高级的任何东西(当然还有简单命令):

eval "$( awk ... )"

这将在当前 shell 的环境中运行代码,因此代码也可以在 shell 中设置或修改变量。

但是,由于您显然想使用 解析其他文件grep,为什么不这样做使用相同的awk程序? ...或者使用另一个awk读取模式和文件名的程序?

答案3

你甚至不需要管道它,因为你已经生活在危险之中;只需运行您的命令,该命令始终只输出要在子 shell 扩展构造中执行的安全命令:

$ $( awk 'BEGIN { print "echo hello" }' )
hello

相关内容