如何输入带空格的路径?

时间:2012-10-15 18:59:30

标签: shell

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

属性文件如下所示:

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

问题是SOME_PATH,我必须使用带空格的路径(我不能改变它)。

我尝试用引号转义空白,但到目前为止还没有解决方案。

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

6 个答案:

答案 0 :(得分:67)

使用以下三种变体之一:

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

答案 1 :(得分:36)

我看到费德里科你自己找到了解决方案。 问题出在两个地方。在您的情况下,分配需要适当的引用

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

是可能的解决方案之一。

但是在shell中,这些引号不存储在内存中, 因此,当您想要使用此变量时,需要再次引用它,例如:

NEW_VAR="$SOME_PATH"

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

NEW_VAR=/YourCompany/someProject/some path

这不是你想要的。

有关详细信息,请查看我的文章http://www.cofoh.com/white-shell

答案 2 :(得分:17)

你可以通过在它之前加一个\来转义“空格”字符。

答案 3 :(得分:2)

SOME_PATH=/mnt/someProject/some\ path

应该有效

答案 4 :(得分:1)

如果文件仅包含参数分配,则可以使用以下循环代替其来源:

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

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

答案 5 :(得分:0)

如果Ubuntu中的路径是&#34; / home / ec2-user /目录名称&#34;,请执行以下操作:

1)Java的build.properties文件:

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

~/等于/home/ec2-user

2)Jenkinsfile:

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