68

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

属性文件如下所示:

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

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

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

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

4

6 回答 6

86

使用以下三种变体之一:

SOME_PATH="/mnt/someProject/some path"
SOME_PATH='/mnt/someProject/some path'
SOME_PATH=/mnt/someProject/some\ path
于 2012-10-15T19:03:17.637 回答
47

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

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

是可能的解决方案之一。

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

NEW_VAR="$SOME_PATH"

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

NEW_VAR=/YourCompany/someProject/some path

这不是你想要的。

有关更多信息,您可以查看我关于它的文章http://www.cofoh.com/white-shell

于 2012-10-22T06:04:55.490 回答
20

您可以通过在其前面放置 \ 来逃避“空格”字符。

于 2012-10-15T19:01:37.757 回答
4
SOME_PATH=/mnt/someProject/some\ path

应该管用

于 2012-10-15T19:01:01.890 回答
1

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

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

这使您不必引用文件中的任何内容,并且也更安全,因为您不会冒险从file.txt.

于 2012-10-15T19:05:30.650 回答
0

如果 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}"
于 2017-06-29T18:30:32.810 回答