在 Clojure 中构建类似于"猫<操作.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的参数,而是作为stdin,您可以通过*in*访问它。

可以使用read-line读取单行,也可以将其封装在BufferedReader中并使用doseq进行处理。

(doseq [line (line-seq (java.io.BufferedReader. *in*))] 
(println line))

请参阅此问题的更多详细信息。

最新更新