我一直在使用一个 bash 脚本(script.sh),它使用各种 awk 脚本(script1.awk,script2.awk),这些脚本是在“运行时”定制的,例如通过替换值。我一直在寻找将它们完全嵌入到第一个 bash 脚本中的方法。理想情况下,我希望有一个如下所示的文件:
################################
# AWK scripts #
################################
read -d '' scriptVariable <<'EOF'
'
{my block commands;}
'
EOF
################################
# End of AWK Scripts #
################################
awk $scriptVariable ${inputfile} # This line obviously doesn't work
而不是传统的:
awk '{
my script commands
' ${intputfile}
当然,我可以将它们写入文件,但重点不是。有什么建议么 ?
编辑:虽然 dogbane 答案工作正常,但下一个问题是使用 <<'HERE' 标记时,不会读取换行符。我无法取消引用它,否则,他试图解释 awk 脚本然后遇到 $ 符号内(并且有)。并且没有换行符,我无法在 awk 脚本中评论任何内容(在删除换行符时不评论脚本的一半......)。任何人 ?
<< 'EOF'
BEGIN{#Hello
print $1
}
EOF # Is read as BEGIN{#Hello print $1} by awk; ie BEGIN{
<< EOF
BEGIN{#Hello
print $1
}
EOF #Is read correctly by awk but Bash tried to express $1 and fails