Xon.sh 和管道中的 Lambda 别名

Posted

技术标签:

【中文标题】Xon.sh 和管道中的 Lambda 别名【英文标题】:Lambda alias in Xon.sh and pipes 【发布时间】:2018-09-18 13:20:12 【问题描述】:

为什么这段代码的运行方式不同。

samuel@corny ~ $ echo "pippo\npluto\nminnie\ntopolino" | @(lambda a,s=None: s.read())                                 
pippo
pluto
minnie
topolino

第二条命令

samuel@corny ~ $ echo "pippo\npluto\nminnie\ntopolino" | @(lambda a,s=None: s.readlines())                            
pippo
pluto

python readlines 是否对逐行读取输入管道不正确。

我的 Xon.sh 版本是 0.7.8

【问题讨论】:

【参考方案1】:

所以这有点微妙,但是callable aliases(其中 lambda 是其中一种)有几种不同类型的对象可以返回。其中一个是(stdout, stderr, returncode) 的元组。

str.readlines() 方法返回一个列表,在本例中为['pippo\n', 'pluto\n', 'minnie\n', 'topolino\n']。所以,这里,

stdout = "pippo\n" stderr = "pluto\n" returncode 从未被打印出来,但这里恰好是 "minnie\n"

这可能不是预期的行为,也是第一个示例有效的原因。

【讨论】:

以上是关于Xon.sh 和管道中的 Lambda 别名的主要内容,如果未能解决你的问题,请参考以下文章

Git别名中的管道?

pfsense 单IP网络别名管道限速的设置

AWS Lambda - 在 CI/CD 管道中版本控制和提升 lambda 的最佳实践是啥

为“管道 grep”创建别名

Perl:当子/管道的文件句柄被别名时,关闭子进程失败

如何将 Python Lambda 函数集成到 AWS Amplify 的管道中