![执行打印在标准输出上的命令](https://linux22.com/image/132293/%E6%89%A7%E8%A1%8C%E6%89%93%E5%8D%B0%E5%9C%A8%E6%A0%87%E5%87%86%E8%BE%93%E5%87%BA%E4%B8%8A%E7%9A%84%E5%91%BD%E4%BB%A4.png)
如何执行使用 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