clojure - 在 Clojure 中构建一个类似于 `cat < operations.txt` 的 cli
问题描述
我正在 Clojure 上构建一个 CLI,它将接收一个名为 operations.txt 的文件,该文件的每一行都有我想要处理的操作。比方说:
clojure -M -m project.process < operations.txt
现在我有一个带有 deps 的简单 repo,当我不添加<
运算符时,我可以接收文件名作为参数,但是一旦我添加了运算符,参数就会返回 nil。
我可以为此做些什么吗?
除了使用https://github.com/seancorfield/clj-new命令创建的内容之外,我不需要在我的项目中添加太多内容。
这是主文件上的代码:
(defn -main
"I don't do a whole lot ... yet."
[& args]
(println args))
我的意思是在这个函数的参数中接收到类似的东西,如果我使用这个:
cat < operations.txt
解决方案
如果您<
在命令行上使用,那么“operations.txt”的内容将不是作为参数提供-main
,而是作为标准输入提供,您可以通过*in*
.
您可以使用read-line
读取单行,或将其包装在 aBufferedReader
中并使用doseq
.
(doseq [line (line-seq (java.io.BufferedReader. *in*))]
(println line))
在这个问题上查看更多细节。
推荐阅读
- activemq - 设置代理的 ActiveMQ 网络的正确方法
- swift - 如何在 Widget 预览 SwiftUI iOS 14 中加载 WKWebView
- excel - VBA 循环宏中的空条件以外的任何内容都不起作用
- python-3.x - 如何在python中获取嵌套的重复BQ表?
- python - 在Django rest框架分页中获取多个页面
- php - Gridview通过映射表只获取一个用户拥有所有设备
- spring-security - BCrypt vs Argon2 及其散列算法
- powershell - Powershell备份脚本创建目录
- reactjs - 无法在 React webapp 中找到无服务器功能的“api”文件夹
- scala - 由推断的表达式类型覆盖的类型注释