0

次のように、Awk プログラムの生成と を介した実行を含むスクリプトを作成していますawk $(...)

[lynko@hephaestus] ~ % awk $(echo 'BEGIN { print "hello!" }')

生成されたプログラムは最終的にはより複雑になりますが、まずこれが可能であることを確認したいと思います。過去に私がやった

[lynko@hephaestus] ~ % program=$(echo 'BEGIN { print "hello" }')
[lynko@hephaestus] ~ % awk "$program"
hello!

グループ化は驚くべきことではありません。しかし、最初の例 (GNU awk の下では、他のマシンのデフォルトである mawk よりも役立つエラー メッセージが表示されます) は次のようになります。

[lynko@hephaestus] ~ % awk $(echo 'BEGIN { print "hello!" }')
awk: cmd. line:1: BEGIN blocks must have an action part

おそらく、これはawk BEGIN { print "hello!" }ではなくとして実行されるためawk 'BEGIN { print "hello!" }'です。強制的$(...)に 1 つのグループにとどまる方法はありますか? "$()"プログラムジェネレーターですべての二重引用符をエスケープする必要があるため、使用したくありません。

Crunchbang Waldorf で Bash 4.2.37 と mawk 1.3.3 を実行しています。

4

2 に答える 2