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

ide*_*456 2 linux shell bash

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

grep -B100 some file1.tcl
grep -B100 some file2.tcl
Run Code Online (Sandbox Code Playgroud)

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

awk '{print xx}' | pipeline
Run Code Online (Sandbox Code Playgroud)

nxn*_*nev 6

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

$ printf 'echo foo\necho bar\n' | bash
foo
bar
Run Code Online (Sandbox Code Playgroud)


Kus*_*nda 6

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

eval "$( awk ... )"
Run Code Online (Sandbox Code Playgroud)

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

不过,既然你显然想利用来解析其他文件grep,为什么不这样做用相同的awk程序?...或者使用另一个awk读取模式和文件名的程序?