终于可以优雅的捕获 shell heredoc 内容了

看下面的示例:

终于可以用这种方式捕获 heredoc 的内容了
我太高兴了!
原先那种方式:

不光丑陋,而且会出各种问题,例如如果正文中出现一个  字符就傻逼了,即便使用 $(cat ...) 的语法也一样有各种问题。

 

旧的那篇:shell heredoc 微妙之处

这种写法主要解决的问题是:避免了嵌套结构,于是 heredoc 的语法解析细节就和外层的shell调用(..或者$(..))毫不相干了。

这种写法为什么可以正确地工作?因为eval引入了一个子结构,这样eval ... 作为一个整体来接受输入,不管它是 heredoc 还是别的什么,比如也可以是一个文件重定向(eval 'var=cat' < file)。

因为 shell 的管道语法限制了数据流的方向,只能从左向右,而 heredoc 的数据流却是从右向左,于是,事情就变得有点复杂了( eval 'var=cat’ … 算得上复杂吗?)。

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

您可能感兴趣的文章:

发表评论

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