为什么不能将AWK程序读取为heredoc

为什么不能将AWK程序读取为heredoc,awk,sh,Awk,Sh,为什么下面两个类似的脚本有不同的行为 以下命令: {echo a;echo b;}awk$cat简短回答:在“$cat…”周围使用引号防止bash解析cat的输出,并将其视为单个参数 { echo a; echo b; } | awk "$(cat <<'EOF' {print $0} EOF )" 将“{print”作为程序的第一个参数,并将“$0}”作为输入文件的第二个参数。要将组合字符串视为一个参数,需要使用引号。带引号的扩展命令和命令替换为

为什么下面两个类似的脚本有不同的行为

以下命令:


{echo a;echo b;}awk$cat简短回答:在“$cat…”周围使用引号防止bash解析cat的输出,并将其视为单个参数

{ echo a; echo b; } | awk "$(cat <<'EOF'
    {print $0}
EOF
)"
将“{print”作为程序的第一个参数,并将“$0}”作为输入文件的第二个参数。要将组合字符串视为一个参数,需要使用引号。带引号的扩展命令和命令替换为

   awk "{print $0}"

简短回答:在“$cat…”周围使用引号防止bash解析cat的输出,并将其视为单个参数

{ echo a; echo b; } | awk "$(cat <<'EOF'
    {print $0}
EOF
)"
将“{print”作为程序的第一个参数,并将“$0}”作为输入文件的第二个参数。要将组合字符串视为一个参数,需要使用引号。带引号的扩展命令和命令替换为

   awk "{print $0}"

只是好奇-你为什么考虑做这两件事?只是好奇-你为什么考虑做这两件事?
   awk "{print $0}"