18
A
回答
19
我不知道的方式做到这一点,但你可以做到你想用做什么:
somecommand | while read -r; do echo "Something with $REPLY"; done
这也会更快,因为你不会为每一行文本创建一个新的进程。
[编辑2009-07-09] 我做了两个转变:
- 结合了使用
-r
禁用反斜线处理litb的建议 - 这意味着在输入反斜杠将被传递通过不变。 - 除了提供变量名称(例如
X
)作为参数read
,我们让read
分配给其默认变量REPLY
。这具有保留前导空间和尾随空间的愉悦副作用,即使内部空间被保留,也会被剥离。
根据我的观察,这些更改一起保留了除每个输入行上的文字NUL(ASCII 0)字符外的所有内容。
[EDIT 26/7/2016]
据评论者Evi1M4chine,运行read X
(例如,与命令IFS='' read X
)也应保持在开始和结束时的空间之前设置$IFS
为空字符串将结果存储到$X
,这意味着您不必使用$REPLY
。
3
这是怎么回事?
somecommand | xargs -d"\n" -I{} echo "the argument is: {}"
(假定每个参数是一条线,以其它方式改变分隔符)
1
如果想仅xargs的(例如由于平行-P N
选项),并且仅bash作为功能代码,然后bash -c
可以用作xargs的参数。
seq 1 10 | tr '\n' '\0' | xargs -0 -n 1 bash -c 'echo any bash code $0'
tr和-0选项在此处用于禁用任何xargs参数替换。
7
如果你想要真正的函数,而不仅仅是管道或while循环(例如,如果你想传递它们,就好像它们是数据)我只是不做lambda表达式,并定义具有重复虚拟名称的虚拟函数,马上使用,然后扔掉。像这样:
就像在适当的函数式语言,就没有必要来传递参数,你可以在一个闭合将它们包装:
# 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" "[email protected]"; }; map λ *
我认为它比其他更短解决方案介绍在这
0
是的。可以传递一个表示命令调用的字符串变量,然后用eval执行该命令。
例子:
command='echo howdy'
eval "$command"
相关问题
- 1. 的lambda函数
- 2. java中的AWS Lambda函数
- 3. Python的lambda函数
- 4. jQuery lambda函数
- 5. jython lambda函数
- 6. Python lambda函数
- 7. lambda函数(C++)
- 8. 在lambda函数
- 9. numpy的函数数组构造函数中的lambda函数
- 10. lambda函数VS仿函数
- 11. Bash中的全局函数?
- 12. python中lambda函数的列表参数
- 13. lambda函数和OOP
- 14. LLVM IR Lambda函数
- 15. theano和lambda函数
- 16. 使用lambda函数
- 17. Python和lambda函数
- 18. AWS Lambda函数+ CloudWatch
- 19. 舍入lambda函数
- 20. 通用lambda函数
- 21. vb lambda MAX函数
- 22. 如何在lambda中的lambda函数中捕获“this”?
- 23. python中的类的lambda函数?
- 24. AWS中的IOT按钮的Lambda函数
- 25. “打包的AWS Lambda函数
- 26. 带有lambda函数的ptr_fun
- 27. 查看lambda函数的console.log's
- 28. 干涸的Java(lambda函数?)
- 29. Python的lambda函数到PHP
- 30. bash bcmath函数
+1,这是真棒! – orip 2009-01-15 19:53:38
我想这个方法在过去的问题是它对于没有空格的字符串很有用。例如,如果的输出是文件列表,其中一些文件有空格,则“读取X”失败。我已经在某处读过如何处理这个问题,但似乎从未回忆过这些细节。 –
Daniel
2009-01-29 19:58:38