如何输入带有空格的路径?

Posted

技术标签:

【中文标题】如何输入带有空格的路径?【英文标题】:How to input a path with a white space? 【发布时间】:2012-10-15 18:59:29 【问题描述】:

我有一个主文件,它使用(从我做一个源的主文件)一个带有指向路径的变量的属性文件。

属性文件如下所示:

TMP_PATH=/$COMPANY/someProject/tmp
OUTPUT_PATH=/$COMPANY/someProject/output
SOME_PATH=/$COMPANY/someProject/some path

问题是SOME_PATH,我必须使用带空格的路径(我无法更改)。

我尝试用引号转义空格,但目前没有解决方案。

我编辑了路径,单引号的问题是我在路径中使用了另一个变量$COMPANY

【问题讨论】:

【参考方案1】:

使用以下三种变体之一:

SOME_PATH="/mnt/someProject/some path"
SOME_PATH='/mnt/someProject/some path'
SOME_PATH=/mnt/someProject/some\ path

【讨论】:

是的,但是我已经将 \ 转义了。不是说其他​​人错了。【参考方案2】:

我看到 Federico 您自己找到了解决方案。 问题出在两个地方。在您的情况下,作业需要正确引用

SOME_PATH="/$COMPANY/someProject/some path"

是可能的解决方案之一。

但在 shell 中,这些引号不会存储在内存中, 所以当你想使用这个变量时,你需要再次引用它,例如:

NEW_VAR="$SOME_PATH"

因为如果没有,空间将扩展到命令级别,如下所示:

NEW_VAR=/YourCompany/someProject/some path

这不是你想要的。

更多信息你可以查看我的文章http://www.cofoh.com/white-shell

【讨论】:

这确实应该被标记为正确答案。引用变量本身的细节似乎是绊倒人们的主要因素(包括我!) 对我有帮助的关键信息是,在变量定义期间使用的引号不会成为变量值的一部分,因此在使用时必须再次引用变量。 【参考方案3】:

您可以通过在“空格”字符前面放一个 \ 来转义它。

【讨论】:

你有没有把那条路径放在任何引用中? 已解决。问题在于一个引用是没有引号的变量【参考方案4】:
SOME_PATH=/mnt/someProject/some\ path

应该工作

【讨论】:

是的,我尝试转义字符,但在这种情况下,给了我 "/mnt/someProject/some" 而没有 "path" 这可能与你的操作系统有关。一个标准的 bash 控制台应该可以工作。您使用的是什么操作系统?【参考方案5】:

如果文件只包含参数分配,您可以使用以下循环代替源代码:

# Instead of source file.txt
while IFS="=" read name value; do
    declare "$name=$value"
done < file.txt

这使您不必引用文件中的任何内容,而且更安全,因为您不会冒险执行来自file.txt 的任意代码。

【讨论】:

这可能是一个解决方案。问题是有比分配更多的东西。谢谢!【参考方案6】:

如果 Ubuntu 中的路径是“/home/ec2-user/目录名”,那么这样做:

1) Java 的 build.properties 文件:

build_path='/home/ec2-user/Name\\ of\\ Directory'

其中~/ 等于/home/ec2-user

2) 詹金斯文件:

build_path=buildprops['build_path']
echo "Build path= $build_path"
sh "cd $build_path"

【讨论】:

以上是关于如何输入带有空格的路径?的主要内容,如果未能解决你的问题,请参考以下文章

C语言用如何用scanf输入带有空格的字符串

C语言用如何用scanf输入带有空格的字符串

C 不能输入带空格的字符串

安装游戏错误提示必须输入带有盘符的完整路径

如何使用带有路径的“开始”和带有空格的命令在 Windows 中创建批处理文件

读取bash脚本中的输入,该脚本是路径中带有空格的目录[重复]