我有一个主文件,它使用(从主要我来源)一个属性文件,其变量指向路径。
属性文件如下所示:
TMP_PATH=/$COMPANY/someProject/tmp
OUTPUT_PATH=/$COMPANY/someProject/output
SOME_PATH=/$COMPANY/someProject/some path
问题是SOME_PATH
,我必须使用带空格的路径(我不能改变它)。
我尝试用引号转义空白,但到目前为止还没有解决方案。
我编辑了路径,单引号的问题是我在路径中使用了另一个变量$COMPANY
答案 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}"