从终端输入命令启动 lein repl

10

我希望编写一个Shell脚本来启动Lein REPL,并同时提供一些命令,同时保持REPL的运行状态。

例如,我可能想要执行以下操作的等价形式:

lein repl
(dev)
(setup)

我可以通过echo "(dev)\n(setup)" | lein repl将内容导入到repl中,但是repl之后会终止。

有没有方法可以解决这个问题或者其他从shell脚本启动repl和发出命令的方法?


如果您不需要使用 Lein,而只是使用 Clojure,您可以使用“-e”和“-r”命令行选项。 - Mars
1个回答

14
(echo "(println :hello)"; cat <&0) | lein repl

这将输出命令 - 让REPL处理它 -,然后回到标准输入以获取输入。不过,在离开REPL后,你可能需要中断cat的调用。


很棒的技巧,xsc。我经常使用像2>&1这样的东西,但不知道那个技巧。 - Mars
为什么不直接使用 echo '(println 1)' | lein repl 呢? - Anton Chikin
1
@AntonChikin 这会导致 REPL 在运行命令后关闭,而这正是问题所要避免的。 - xsc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接