首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Bash脚本到cd目录,路径名中包含空格

Bash脚本到cd目录,路径名中包含空格
EN

Stack Overflow用户
提问于 2009-02-26 12:50:42
回答 14查看 173.6K关注 0票数 111

我在macOS X上使用Bash,我想创建一个简单的可执行脚本文件,它在运行时会切换到另一个目录。但是,该目录的路径中包含空格。你到底是怎么做到的?这就是我所拥有的。

文件名:cdcode

文件内容:

代码语言:javascript
复制
cd ~/My Code

现在承认,这不是一个很长的路径名,但我的实际路径名有五个目录深,其中四个目录在路径中有空格。

顺便说一句,我试过cd "~/My Code"cd "~/My\ Code",但它们都不起作用。

EN

回答 14

Stack Overflow用户

发布于 2009-02-26 05:23:13

当您对路径进行双引号时,您正在停止波浪号的扩展。因此,有几种方法可以做到这一点:

代码语言:javascript
复制
cd ~/"My Code"
cd ~/'My Code'

此处没有引用代字号,因此代字号扩展仍将运行。

代码语言:javascript
复制
cd "$HOME/My Code"

您可以在双引号字符串中展开环境变量;这基本上就是代字号展开所做的

代码语言:javascript
复制
cd ~/My\ Code

您还可以使用反斜杠对特殊字符(如空格)进行转义。

票数 94
EN

Stack Overflow用户

发布于 2010-06-13 23:52:58

我在this page上找到了下面的解决方案:

代码语言:javascript
复制
x="test\ me"  
eval cd $x

双引号文本常量中的\cd之前的eval的组合使其工作起来很有吸引力!

票数 46
EN

Stack Overflow用户

发布于 2017-12-03 18:43:59

在解决了同样的问题之后,我尝试了两种不同的解决方案:

1.在变量中使用双引号("")。

最简单的方法是用双引号将变量引起来,就像上一个答案中指出的那样:

代码语言:javascript
复制
cd "$yourPathWithBlankSpace"

2.使用eval

根据这个答案Unix command to escape spaces,您可以去掉空格,然后使用eval,如下所示:

代码语言:javascript
复制
yourPathEscaped=$(printf %q "$yourPathWithBlankSpace")
eval cd $yourPathEscaped
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/589149

复制
相关文章

相似问题

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