我(实际上)是函数式编程的新手(实际上只使用python与它联系),但对于shell环境中的一些列表密集型任务来说似乎是一个很好的方法。
我喜欢做这样的事情:
$ [ git clone $host/$repo for repo in repo1 repo2 repo3 ]
是否有任何具有这些功能的Unix shell?或者也许是一些功能允许在python中轻松访问shell(命令,env / vars,readline等等)(想法是使用python的交互式解释器作为bash的替代)。
编辑:
也许一个比较例子会澄清。假设我有一个由dir / file组成的列表:
$ FILES=( build/project.rpm build/project.src.rpm )
我想做一个非常简单的任务:将所有文件复制到dist /并将其安装在系统中(它是构建过程的一部分):
使用bash:
$ cp $ {files [*]} dist / $ cd dist && rpm -Uvh $(对于$ {files [*]}中的f;执行basename $ f; done))
使用“pythonic shell”方法(注意:这是虚代码):
文件中的$ cp [os.path.join('dist',os.path.basename(file))]'dist'
你能看到区别么 ?这就是我在说什么。怎么不能用内置这些东西退出shell呢?处理shell中的列表真的很痛苦,即使它是一个如此常见的任务:文件列表,PID列表,所有内容列表。
一个非常非常重要的观点:使用语法/工具/功能,每个人都已经知道:sh和python。
IPython接缝处于一个良好的方向,但它是臃肿的:如果var名称以'$'开头,它会这样做,如果'$$'就是这样做的话。它的语法不是“自然的”,所以很多规则和“变通方法”([ ln.upper() for ln in !ls ]
- >语法错误)