首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >bash中的lambda函数

bash中的lambda函数
EN

Stack Overflow用户
提问于 2009-01-15 19:30:37
回答 5查看 15.2K关注 0票数 28

有没有办法在bash中实现/使用lambda函数?我在想像这样的东西:

代码语言:javascript
复制
$ someCommand | xargs -L1 (lambda function)
EN

回答 5

Stack Overflow用户

发布于 2013-12-19 16:46:15

如果你想要真正的函数,而不仅仅是管道或while循环(例如,如果你想传递它们,就像它们是数据一样),我就不会做lambdas,而是定义一个重复出现的虚拟名称的虚拟函数,以便立即使用,然后丢弃。如下所示:

代码语言:javascript
复制
# An example map function, to use in the example below.
map() { local f="$1"; shift; for i in "$@"; do "$f" "$i"; done; }

# Lambda function [λ], passed to the map function.
λ(){ echo "Lambda sees $1"; }; map λ *

就像在正确的函数式语言中一样,不需要传递参数,因为您可以将它们包装在闭包中:

代码语言:javascript
复制
# Let’s say you have a function with three parameters
# that you want to use as a lambda:
# (As in: Partial function application.)
trio(){ echo "$1 Lambda sees $3 $2"; }

# And there are two values that you want to use to parametrize a
# function that shall be your lambda.
pre="<<<"
post=">>>"

# Then you’d just wrap them in a closure, and be done with it:
λ(){ trio "$pre" "$post" "$@"; }; map λ *

我认为它甚至比这里提出的所有其他解决方案都要短。

票数 13
EN

Stack Overflow用户

发布于 2009-03-01 16:01:12

那这个呢?

代码语言:javascript
复制
somecommand | xargs -d"\n" -I{} echo "the argument is: {}"

(假设每个参数都是一行,否则更改分隔符)

票数 4
EN

Stack Overflow用户

发布于 2020-10-12 06:04:41

代码语言:javascript
复制
#!/bin/bash

function customFunction() {
    eval $1
}

command='echo Hello World; echo Welcome;'
customFunction "$command"

总帐

Source

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/448126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档