2024年Clojure调查问卷!中分享您的想法。

欢迎!请查看关于页面以获取更多关于如何使用本网站的信息。

0
Clojure CLI

下面的命令在pwsh中运行正常

clojure -Sdeps '{:deps {nrepl/nrepl {:mvn/version "1.0.0"} cider/cider-nrepl {:mvn/version "0.43.3"}} :aliases {:cider/nrepl {:main-opts ["-m" "nrepl.cmdline" "--middleware" "[cider.nrepl/cider-middleware]"]}}}' -M:cider/nrepl

但在powershell(Windows powershell 5.1)中失败,当在Windows powershell中运行时,双引号会被移除,因此为了在Windows powershell中运行它,我们需要转义双引号,并运行以下命令:

clojure -Sdeps '{:deps {nrepl/nrepl {:mvn/version ""1.0.0""} cider/cider-nrepl {:mvn/version ""0.43.3""}} :aliases {:cider/nrepl {:main-opts [""-m"" ""nrepl.cmdline"" ""--middleware"" ""[cider.nrepl/cider-middleware]""]}}}' -M:cider/nrepl

而且第二个命令在pwsh(powershell dotnet)中也会失败,因为字符串被双双引号包围

这个问题,对我来说似乎是Clojure命令的问题,因为根据powershell文档,在单引号字符串内不应需要转义双引号

我发现这个问题是在尝试使用cider在emacs上时发现的,cider默认创建第二个命令,并且在默认情况下使用pwsh时会失败

这是否是一个可以修复的问题,或者cider应该像处理powershell一样区分处理pwsh?

1 个答案

+2

Clojure CLI参考讨论了Windows上的引号问题

https://clojure.org/reference/deps_and_cli#quoting

by
Hi Sean

感谢您通过链接回复,在引用部分的最后两个示例在 PowerShell 5.1 中按预期工作,但在 PowerShell 7.4(pwsh)中引发错误

PowerShell 7.4.0
PS C:\> clj -X clojure.core/prn :val '{:s1 """nospaces""" :s2 ""has spaces""}'
不可读参数:"{:s1 """"nospaces"""" :s2 ""has spaces""}"
PS C:\> clj -X clojure.core/prn :string1 '\"no-spaces\"' :string2 '"""has spaces"""'
不可读参数:"\\\"no-spaces\\""
by
从版本 7.3 开始,pwsh 引入了一个破坏性变更
有关分析的详细信息,请参阅这里 https://github.com/clojure-emacs/cider/pull/3590#issuecomment-1832783190

这应该是此问题的原因
不确定从 Clojure 一边如何解决这个问题
by
这并不是 Clojure 一边可以解决的问题,引用是环境影响解释,它会影响 CLI 看到的内容。我已经为此问题创建了一个问题,建议扩展现有的引用文档以包含有关信息(https://github.com/clojure/clojure-site/issues/678)。
...