我正在寻找的是Windows命令行中的这种命令行交互:
C:\temp1>clj some_script.clj
C:\temp2>
some_script.clj包含以下内容:
(cd "c:\\temp2")
所以问题是 - 我如何实现功能cd?已经尝试过clojure.java.shell,但它看起来不像我需要的lib。这可能是一个简单的问题,问题可能是我不能流利使用Java?!
我正在寻找的是Windows命令行中的这种命令行交互:
C:\temp1>clj some_script.clj
C:\temp2>
some_script.clj包含以下内容:
(cd "c:\\temp2")
所以问题是 - 我如何实现功能cd?已经尝试过clojure.java.shell,但它看起来不像我需要的lib。这可能是一个简单的问题,问题可能是我不能流利使用Java?!
你不能用Java做到这一点,所以你不能在Clojure中做到这一点。看到 在Java中更改当前工作目录?
clojure可以做到这一点。
您只需要更改一个名为的动态全局变量 *sh-dir*
。在repl中运行以下代码:
(use '[clojure.java.sh])
(sh "ls")
=> {:exit 0, :out "LICENSE\nREADME.md\nauto_deploy.iml\ndoc\nproject.clj\nresources\nsrc\ntarget\ntest\n", :err ""}
(binding [*sh-dir* "c:/"] (sh "ls"))
{:exit 0,
:out "$360Section
$GetCurrent
$Recycle.Bin
Boot
Documents and Settings
ImbaMallLog.txt
Intel
MSOCache
OEMSY
PerfLogs
Program Files
Program Files (x86)
ProgramData
Python27
Recovery
System Volume Information
Users
Windows
apache-ant-1.9.3
bootmgr
hiberfil.sys
inetpub
pagefile.sys
",
:err ""}
有关详细信息,请参阅doc。您可以使用 (alter-var-root #'clojure.java.shell/*sh-dir* (constantly "the-cd-path"))
不断改变它。感谢isaac告诉我这件事。
希望这可以帮助。