【发布时间】:2014-07-20 08:58:59
【问题描述】:
我正在编写一个涉及生成 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!" }' 执行的。有没有办法可以强制$(...) 保持为一个组?我宁愿不使用"$()",因为我必须转义程序生成器中的所有双引号。
我在 Crunchbang Waldorf 上运行 Bash 4.2.37 和 mawk 1.3.3。
【问题讨论】:
-
你不需要在
$()中转义双引号
标签: bash awk words command-substitution