bash 中 here document

大多数脚本语言都有here document, 因为它太有用了。

为什么有用?

你受得了 C “”字符串里不断的 \” \t  \r 等解引用吗,还有 多行字符串的拼接 “a”"b”。所以我讨厌 C的字符串处理,更讨厌用C来写 cgi。

here document 让一切都清静了。

 

作为历史悠久的bash也不例外。

cat << EOF

  ok , baby

EOF

我经常使用 here document 和 <()来写脚本

awk –f <(cat <<EOF

      {

         …… $abc ….

       }

EOF

)

我发现一个问题 <<EOF 这种here document 和 双引号字符串(“”)有相同的 解析效果,就是会对 $name, ${name}进行变量替换, 也会对$()进行命令替换。使用 \$, 可以解决这个问题。但这影响了here document 的可读性。有什么更好的方法吗?

 

<<'EOF'  救星来了

如果定界符被任何引号括住,shell 就不会对文本进行替换。

abc=ok

cat <<'EOF'

    $abc

EOF

输出: $abc

abc=ok

cat <<EOF

    $abc

EOF

输出: ok

posted @ 2011-02-25 14:54  napoleon_liu  阅读(2467)  评论(1编辑  收藏  举报