shell heredoc 微妙之处

here doc 的一般用法是:

[cmd] <<word
here-document
delimiter

使用 捕获 heredoc 内容比较丑陋,但这是我目前能找到的不需要中间文件就可以将heredoc内容存到变量中的唯一方式($(..)也可以,但似乎更丑陋,并且移植性更差)。我觉得比较好的捕获heredoc内容的方式应该象这样,不需要在delimiter 之后再放一个标记:

然而有两点需要注意:
当word中含有双引号(” )时,heredoc 结束标记(delimiter )需要写成 按shell 移除引号的规则 移除引号之后 的形式。比如:

在这种情况下(word中包含引号),heredoc的文本内容会原原本本地输出,而不会被shell扩展。 反之 (word中无引号) , heredoc的内容会按shell扩展规则被扩展,例如将$1扩展成参数等等,并且 newline 会被删除。

还有一种情况,就是重定向 符号 << 可以使用 <

可以使用 heredoc 直接在 shell 中写比较复杂的 awk 程序,比直接在在引号中写要可读、易懂得多:

作者:
该日志由 rockeet 于2010年02月05日发表在shell分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
转载请注明: shell heredoc 微妙之处
标签:
【上一篇】
【下一篇】

您可能感兴趣的文章:

发表评论

您必须 登录 后才能发表评论。