【问题标题】:How to input a path with a white space?如何输入带有空格的路径?
【发布时间】:2012-10-05 19:36:06
【问题描述】:

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

属性文件如下所示:

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

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

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

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

【问题讨论】:

    标签: shell


    【解决方案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”而没有“路径”
    • 那么它可能与你的操作系统有关。一个标准的 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}"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-09
      • 2012-08-30
      • 2011-03-20
      • 1970-01-01
      • 1970-01-01
      • 2017-02-01
      • 2015-06-18
      相关资源
      最近更新 更多