首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Elisp:使用包含空格的路径调用start-process

Elisp:使用包含空格的路径调用start-process
EN

Stack Overflow用户
提问于 2012-03-23 22:42:31
回答 1查看 691关注 0票数 3

我正在编写一个调用下级进程的模式。启动该进程的代码行为:

代码语言:javascript
复制
(setq grass-process (start-process "grass" "*grass*" "grass" "-text"
                           (concat  (file-name-as-directory 
                                    (cdr grass-location)) 
                           grass-mapset)))

grass-locationgrass-mapset都是字符串,分别包含顶层目录和其中一个嵌套目录的路径,这两个目录需要作为set-process的参数连接起来。

grass-locationgrass-mapset包含没有空格的普通目录时,这很好用。但是,如果目录名中有空格,则在传递给start-process时会将其删除,从而产生以下错误:

代码语言:javascript
复制
grass-location
=> ("geobase Canada" . "/home/tws/grassdata/geobase Canada")
grass-mapset
=> "PERMANENT"

;; Calling start-process as above, the following error is produced
;; in the *grass* buffer:


Cleaning up temporary files ...
Starting GRASS ...
/home/tws/grassdata/geobaseCanada/PERMANENT: Not a valid GRASS location

Process grass exited abnormally with code 1

请注意,geobase Canada被简化为geobaseCanada。我曾尝试在concat表达式中添加引号来保护该字符串,但它产生了更奇怪的错误,主目录被放在参数的前面。

如何将带有空格的路径名传递给start-process?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-25 17:10:51

[按照@event_jr的建议,我在这里转发了我的评论作为答案,因为看起来这就是问题的根源]

您对start-process的调用似乎是正确的;您确定问题不是来自grass程序本身吗?(例如,第二个参数似乎与第一个参数连接在一起;可能在此过程中丢失了空格……)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9841196

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档