我正在尝试做的事情如下:
(let ((pj-path (concat src haxe-project-generator)))
(when (file-exists-p pj-path)
(shell-command
(concat "env " (haxe-build-env-vars <more arguments>)
(format "'%s'" pj-path)))))
即我想pj-path
在填充了一些变量的环境中调用一个程序。
在(format "'%s'" pj-path)
我尝试单引号和双引号的行中 - 但env
不进行路径扩展,如果它被引用,它将把它当作一个字符串,而不是找到文件。但是,如果它没有被引用,那么它将把直到第一个空格之前的字符串部分解释为程序的路径。
如果我转义空格(如在它们前面加上反斜杠),它似乎可以工作,但可以肯定的是,空格不是唯一会混淆执行命令的 shell 的字符。
那么,在 eLisp 中转义应该传递给 env 的可执行文件名称的正确方法是什么?