我正在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))
请参阅此问题的更多详细信息。