標準出力に印刷されたコマンドを実行します。

標準出力に印刷されたコマンドを実行します。

awkを使用して標準出力に印刷するコマンドをどのように実行しますか?たとえば、awk を使用して以下を印刷します。

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

次に、.shファイルに保存し、そのファイルをインポートします。コマンドを実行できるように、これをどこかにパイプできますか?

awk '{print xx}' | pipeline

答え1

ただシェルにパイプします。

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

答え2

単純なコマンドよりも進化したコマンドの場合(もちろん簡単なコマンドもあります):

eval "$( awk ... )"

これにより、現在のシェルのコンテキストでコードが実行されるため、コードはシェルで変数を設定または変更することもできます。

grepしかし、明らかに次のように他のファイルを解析したいのでそれ同じawkプログラムを使用していますか? ...またはawkパターンとファイル名を読み取る別のプログラムを使用しますか?

答え3

すでに危険にさらされているのでパイプする必要もありません。コマンドを実行すると、常にサブシェル拡張構成で実行される安全なコマンドのみが出力されます。

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

関連情報