【发布时间】:2020-12-10 20:30:20
【问题描述】:
在 Linux 系统上,我想读取一些文本并将其作为参数传递给这样的 Clojure 文件
cat ./some-text.txt | clj ./solution.clj
我希望看到 Clojure 的一些输出打印到标准输出。 solution.clj 没有主函数,也没有声明任何命名空间。我使用 deps.edn 作为我的工具。有没有可能?
我在 9 年前看过关于 SO 的示例,但这些示例不再有效。
一些进展
我有这个脚本,我的文件给出了预期的输出,但我收到了一个警告,我不知道如何摆脱它。
脚本
#!/bin/bash
export OUTPUT_PATH=./out.txt
> ./out.txt
cat ./input0.txt | clj -Srepro ./solution.clj
cat ./out.txt
部分问题是脚本需要设置环境变量,这增加了我寻找解决方案的复杂性。在脚本中,我尝试了 clojure 和 clj。两者都发出警告。
警告
$ sh ./runme.sh
WARNING: When invoking clojure.main, use -M
hello
如果脚本没有主函数,我如何摆脱警告?
代码
;; Complete the missingNumbers function below.
(defn missingNumbers [arr brr] (list "hello"))
(def fptr (get (System/getenv) "OUTPUT_PATH"))
(def n (Integer/parseInt (clojure.string/trim (read-line))))
(def arr (vec (map #(Integer/parseInt %) (clojure.string/split (read-line) #" "))))
(def m (Integer/parseInt (clojure.string/trim (read-line))))
(def brr (vec (map #(Integer/parseInt %) (clojure.string/split (read-line) #" "))))
(def result (missingNumbers arr brr))
(spit fptr (clojure.string/join " " result) :append true)
(spit fptr "\n" :append true)
【问题讨论】:
-
@cfrick 这看起来跟我一点关系都没有?
-
@cfrick 啊,当然。说得通。我将标记此评论线程以删除,因为不再需要。
标签: clojure