我(真的)是函数式编程的新手(实际上只使用 python 接触过它),但对于 shell 环境中的一些列表密集型任务似乎是一个很好的方法。
我很想做这样的事情:
$ [ git clone $host/$repo for repo in repo1 repo2 repo3 ]
Run Code Online (Sandbox Code Playgroud)
有没有具有这些功能的 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 $(for f in ${files[*]}; do basename $f; done))
使用“pythonic shell”方法(注意:这是虚构的代码):
$ cp [ os.path.join('dist', os.path.basename(file)) for file in FILES ] 'dist'
你能看到差别吗 ?这就是我要说的。如何不能退出带有这些内置东西的外壳?在 shell 中处理列表真的很痛苦,即使它是一项如此常见的任务:文件列表、PID 列表、所有内容列表。
还有一个非常非常重要的一点:使用大家都知道的语法/工具/功能:sh …